iOS 杂谈

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,怎么处理?

参考:https://stackoverflow.com/questions/24800742/iosavplayeritemvideooutput-hasnewpixelbufferforitemtime-doesnt-work-correctly

这里也有另外一个扩展:《视频添加滤镜的预览和导出》利用CIFilter对视频进行逐帧处理

 

9.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值