iOS开发创建UI的耗时操作处理
2017-04-14 13:33
405 查看
项目中有网络请求、读写操作等一系列耗时操作时,为了避免阻塞主线程,我们会把这些耗时操作放到子线程中去处理,当处理完成后,再回到主线程更新UI,这样就不会阻塞主线程。但是创建UI的时候一般都是在主线程中执行,如果需要创建的UI控件比较多的时候,可能会发生很不友好的卡顿现象,体验很差,比如当push到某一个ViewController中,由于项目需求,该ViewController中创建了比较多的view及view子类,页面在跳转的时候,会发生很不友好的卡顿现象。
这时候比较简单的方法就是直接使用。
这个方法共有四个参数,第一个参数可以理解为要调用的方法名字;第二个参数表示要调用的方法所携带的参数(若无参,传nil即可);第三个参数表示延迟多少秒执行(若不要延迟执行传0.0即可);最后一个参数是一个数组,数组中的元素为RunLoop的mode(NSDefaultRunLoopMode和NSRunLoopCommonModes)。
转自:http://www.jianshu.com/p/82c98bf6ef81
这时候比较简单的方法就是直接使用。
[self performSelector:(nonnull SEL) withObject:(nullable id) afterDelay:(NSTimeInterval) inModes:(nonnull NSArray<NSString *> *)];
这个方法共有四个参数,第一个参数可以理解为要调用的方法名字;第二个参数表示要调用的方法所携带的参数(若无参,传nil即可);第三个参数表示延迟多少秒执行(若不要延迟执行传0.0即可);最后一个参数是一个数组,数组中的元素为RunLoop的mode(NSDefaultRunLoopMode和NSRunLoopCommonModes)。
- (void)viewDidLoad { [super viewDidLoad]; [self performSelector:@selector(setupUI) withObject:nil afterDelay:0.0f inModes:@[NSRunLoopCommonModes]]; } //这段代码是在当前线程中使用给定的具体的Runloop mode来执行并不一定是在主线程中执行。如果想要确保在主线程中执行, 可以使用 //performSelectorOnMainThread:withObject:waitUntilDone:或者 //performSelectorOnMainThread:withObject:waitUntilDone:modes:来代替 - (void)setupUI { //阻塞主线程的UI操作可放到这里执行 for (int i=0; i<10000; i++) { UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, i*2+10, 5, 5)]; view.backgroundColor = [UIColor redColor]; [self.view addSubview:view]; NSLog(@"耗时UI操作"); NSLog(@"%@", view); } }
转自:http://www.jianshu.com/p/82c98bf6ef81
相关文章推荐
- IOS开发(60)之使用GCD执行UI操作
- iOS开发UI— QQ好友列表(处理头部控件的点击)viewForHeaderInSection:
- iOS开发——UI基础-按钮的创建和设置
- iOS开发-UI控件:自定义UITableViewCell 上的多个按钮点击事件处理
- 实例讲解iOS应用UI开发之基础动画的创建
- ios开发 之 UIPickerView控件,UI关联选择项如何处理
- iOS开发UI高级—09控制器的View的创建
- IOS开发笔记-01按钮操作-10.创建应用程序中的一些细节
- 简述Andriod如何处理UI与耗时操作的通信,有哪些方式及各自的优缺点。
- iOS开发-UI控件:UIImagePickerController 视频录制操作,视频大小,时间长度
- (2) iOS开发之UI处理-UILabel篇
- 【iOS开发】简单UI部分UIButton的创建和UITextField的使用
- 使用Swift开发IOS项目、UI创建、方法调用
- UI系统中的耗时操作处理
- IOS开发笔记:xcode4.2下xib的创建和UI连接的实现方法
- (3) iOS开发之UI处理-UIView篇
- IOS应用开发-图片处理(拉伸图片 创建缩略图 解决图片旋转的问题 图片编码及上传 将图片写入磁盘)
- IOS应用开发-图片处理(拉伸图片 创建缩略图 解决图片旋转的问题 图片编码及上传 将图片写入磁盘)
- 详解iOS的UI开发中控制器的创建方法
- iOS开发系列课程(08) --- 事件处理详解和手势操作