• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ios > 如何在ios程序开发中正确使用activityindicator(菊花等待图标)?

如何在ios程序开发中正确使用activityindicator(菊花等待图标)?

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了activityindicator,indicator,indicator是什么意思,viewpagerindicator,indicator light等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 如何在ios程序开发中正确使用activity indicator(菊花等待图标)?
描述:

我想达到的效果是这样的:
点击按钮
↓
图片ImageView处的占位图消失
↓
图片处开始显示菊花动画图标
↓
旋转五秒中
↓
菊花图标停止并消失
↓
显示新的图片

部分代码如下:

class ViewController: UIViewController {
    @IBOutlet weak var imageView: UIImageView!
    @IBOutlet weak var activityIndicator: UIActivityIndicatorView!
    @IBAction func clickButton(_ sender: UIButton) {
        imageView.image = nil
        activityIndicator.startAnimating()
        sleep(5)
        activityIndicator.stopAnimating()
        imageView.image = UIImage(named: "cat")
    }
}

页面设计

实际效果是点击按钮之后,什么都没有发生,五秒钟之后换成了新的图片。
请问正确的写法应该是怎样的?

我的全部源码在这里:https://github.com/Stanley-Ti...
编程环境是Xcode8 Swift3


解决方案1:

直觉,sleep(5)有问题。
sleep会让CPU停止处理操作。这样,在它使能时,UI不能更新,也就什么都没有发生了。

使用dispatch_after()来替换sleep()处理延迟。

解决方案2:

给你提供两个思路吧,不一定是最好的,但愿对你有用吧。首先sleep(5)是写在主线程中,那么实际上菊花是已经开始动画了,不过当执行到sleep(5)的时候主线程休眠了,runloop不接收触控事件也不更新UI界面,所以你看不到菊花的动画效果,当主线程5秒后被唤醒,直接执行了stopAnimating,然后展示新图片。可以用GCD提供的afterAPI:

imageView.image = nil
activityIndicator.startAnimating()
let delay = DispatchTime.now() + DispatchTimeInterval.seconds(5)
DispatchQueue.main.asyncAfter(deadline: delay) {
        activityIndicator.stopAnimating()
        imageView.image = UIImage(named: "cat")
}

如果还想继续用sleep那可以开辟一个子线程,不过比较麻烦:

DispatchQueue.global().async {
    DispatchQueue.main.async {
        imageView.image = nil
        activityIndicator.startAnimating()
    }
    sleep(5)
    DispatchQueue.main.async {
        activityIndicator.stopAnimating()
        imageView.image = UIImage(named: "cat")
    }
}


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 如何在ios程序开发中正确使用activityindicator(菊花等待图标)?

相关文章

  • 2017-06-05 如何使用parentViewController
  • 2017-06-05 日期格式问题
  • 2017-06-05 使用高德地图定位时,发现WIFI的时候可以显示正确位置,而在使用3G网络的时候定位出现了偏差
  • 2017-06-05 如何实现中国梦afnetwork如何实现同步请求
  • 2017-06-05 要做一个支持横竖屏切换的自动布局
  • 2017-06-05 iOS收到远程通知时怎么播放声音及在桌面图标右上角显示通知数量
  • 2017-06-05 TableView控件tableview滚动到底部的问题
  • 2017-06-05 iOS将一个日期字符串转换为NSDate后,如何解决时区不同引起的时差?
  • 2017-06-05 下载了最新的XCode8但是打包上传项目不出构建版本
  • 2017-06-05 messagesenttodeallocatedinstance

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • swift2我该如果把keyboard加在view上面,而不是让它自动跳出来
    • 怎么在协议中定义泛型函数
    • iOS基础控件新人求教初学iOS注意哪些?
    • ios纯色图片ios:文字嵌入图片的效果
    • tableview侧滑删除的时候,删除最后一行的时候报错。
    • 没接触过ios,Objective-C属于C语音吗?
    • IOS开发需要经常用真机调试吗
    • cruntimelibraryiOS如何使用runtime对富文本进行国际化
    • 调用自定义uiview的方法
    • appstore应用上线后,从APPSTORE下载很慢

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有