1.异步分线程,时间处理完毕通知,
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_group_t group1 = dispatch_group_create();
for (int i = 0; i < self.classArr.count; i++) {
dispatch_group_async(group1, queue, ^{
CRMOpenAccountBaseViewController *childVC = self.classArr[i];
dispatch_group_enter(group1);//加入队列
[childVC saveMessageBack:^(BOOL isSaveSuccess) {
if (isSaveSuccess) {//在执行事件之后再移除队列。
[tempArr removeObject:childVC];
dispatch_group_leave(group1);
}else {//在执行事件之后再移除队列。
dispatch_group_leave(group1);
}
}];
});
}
dispatch_group_notify(group1,queue, ^{
dispatch_async(dispatch_get_main_queue(), ^{
//队列事件处理完毕,拉回主线程刷新数据。
});
});
2.移除键盘通知
收起键盘的方法:
1、点击Return按扭时收起键盘
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
return [textField resignFirstResponder];
}
2、点击背景View收起键盘(你的View必须是继承于UIControl)
[self.view endEditing:YES];
3、你可以在任何地方加上这句话,可以用来统一收起键盘
[[[UIApplication sharedApplication] keyWindow] endEditing:YES];
这个方法是我不久前碰到的,觉得有用,就记下来了。
4. 还有一个方法是直接发送 resignFirstResponder 消息:
[[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil];
3.UILabel处于编辑模式的时候,输入内容长度太长,最初输入的内容不会自动往前缩,是为什么?
是由于设置的uilabel的高度太低了,他不能做到自伸缩。调整一下控件的高度即可。(一般多出现在不同机型的适配小机型上。)
4.项目中使用Masonry的使用的时候不要过多的结合根据屏宽的比例来乘以比例。容易遇到的问题:自适应撑起tabview的cell的高度的时候,会在plus上面出现折行的问题(适配的问题)。
5.tabview的类型当为UITableViewStyleGrouped的时候如果自定义的cell,不让控件自动计算高度(cell,区头,区尾)的时候,一定要将对应的类型设置为0,不让自伸缩。
//区尾停止自伸缩
_visitTableView.estimatedSectionFooterHeight = 0;
//区停止自伸缩
_visitTableView.estimatedRowHeight = 0;
//区头停止自伸缩
_visitTableView.estimatedSectionHeaderHeight = 0;
否则,页面如果有上拉加载新数据的时候,布局偏移会有偏差。是因为控件按照自动伸缩布局处理了一遍,偏移量就会有所不同。导致偏移不是刚好在上次显示的最底部。
6.iOS从通讯录复制出来的电话号码,粘贴到应用的输入框中的时候其实内容是如下的格式的:“\U0000202d186 6814 1610\U0000202c”。(手机号码前后会有两个看不到的占位符,并且之间的分隔方式是344.)
如何去除?
//这里是作为一个类别来处理,可以自己编写成一个方法工具也可以。思想一致
- (NSString *)filterCopyTeleContent {
//去除前后的占位符
NSString *tempStr = [self stringByReplacingOccurrencesOfString:@"\\p{Cf}" withString:@"" options:NSRegularExpressionSearch range:NSMakeRange(0, self.length)];
//再去除中间的空格
return [tempStr stringByReplacingOccurrencesOfString:@" " withString:@""];
}
7.iOS项目在手动引入framework动态库的时候,项目中使用如果涉及版本判断的,一定要记得把该引用动态库的Link Binary With Libraries的状态改为可选的Optional,否则在低版本系统上app会启动加载该动态库因找不到而闪退,打不开app。(下图示例:引入appid三方登陆,引入动态库AuthenticationServices.framework,在iOS12以下(iOS11,iOS10。。。。)的系统没有,导致崩溃app打不开)
8.iOS在使用VideoOutPut来播放视频的时候,使用某一帧画面hasNewPixelBufferForItemTime方法一只返回NO,怎么处理?
这里也有另外一个扩展:《视频添加滤镜的预览和导出》利用CIFilter
对视频进行逐帧处理
9.