iOS13 问题总结

此文主要针对Xcode11 和iOS13系统在适配过程中遇到问题和解决方法,以下方法仅供参考。

由于本人比较懒,内容简约了点,望请见谅。

一、UITextField

1、通过KVC设置placeholderColor 方式已经被禁止,运行会奔溃

id placeholder = [_detailTextField valueForKey:@"_placeholderLabel"];
[placeholder setValue:[UIColor colorWithHexString:@"757575"] forKey:@"textColor"];

解决方法:

添加新类,继承UITextField,重写-(void)drawPlaceholderInRect:(CGRect)rect

-(void)drawPlaceholderInRect:(CGRect)rect {

[self.placeholder drawInRect:rect

              withAttributes:@{NSForegroundColorAttributeName : [UIColor colorWithHexString:@"757575"],

                              NSFontAttributeName : self.font}];

}

2、UITextField 的rightView 设置图片会出现内边距收缩情况,尺寸会被修改

解决方法:

给rightView添加的空间,例如button/iamgeView 添加一个背景UIView

UIView *bgView = [[UIViewalloc]init];

[bgView addSubview:_listBtn];

bgView.backgroundColor = [UIColor clearColor];

bgView.frame = CGRectMake(0, 0, INPUT_HEIGHT, INPUT_HEIGHT);

self.detailTextField.rightView= bgView;

self.detailTextField.rightViewMode = UITextFieldViewModeAlways;

针对上面情况,特地用debug view hierarchy 查看界面尺寸


iOS13 问题总结_第1张图片
WechatIMG2.png

首先设置右边尺寸宽高位位(60,20)(ps:此时x和y是可以不用设置的)

通过debug view hierarchy,发现尺寸发生了变化

iOS13 问题总结_第2张图片
WechatIMG1.png

此时右边的尺寸已经变成了(101,22)

显然尺寸不对,通过优化修改

添加uiview之后的代码


iOS13 问题总结_第3张图片
WechatIMG4.png

查看视图尺寸


iOS13 问题总结_第4张图片
WechatIMG3.png

问题得到了解决!!!

注意:当button作为bgView的子类,必须要和父类的尺寸保存一致,详细参考,这里不再赘述。
frame anchior区别
打不开的直接复制这个链接:
http://blog.sina.com.cn/s/blog_13ecf8a960102vof9.html

二、对于navigationItem

同时设置 leftBarButtonItem 和 rightBarButtonItem 样式必须是一致,否则会出现死循环。

验证方式:通过xcode11 的 debug view hierarchy 功能,查看view 分层情况。如果页面卡住无法点击,那就说明存在死循环。

例如:
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"注销" style:UIBarButtonItemStylePlain target:self action:@selector(logout)];

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"登录" style:UIBarButtonItemStyleDone target:self action:@selector(login)];

解决方法: 将两者的样式设置为一致即可

三、对于frame 重新计算

在开发过程中,会遇到self.frame 问题。当子类添加到父类中,如果子类的frame尺寸超出了父类的尺寸,例如当子类的尺寸是CGRectMake(0,-5,30,30),则子类则无法显示出来。

解决方法:将子类的尺寸设置为CGRectMake(0,0,30,30)

遇到问题会持续更新中....

你可能感兴趣的:(iOS13 问题总结)