iOS13 适配和Xcode11.0踩坑小结
iOS13中presentViewController的问题
更新了Xcode11.0beta之后,在iOS13中运行代码发现presentViewController和之前弹出的样式不一样。
会出现这种情况是主要是因为我们之前对UIViewController里面的一个属性,即modalPresentationStyle(该属性是控制器在模态视图时将要使用的样式)没有设置需要的类型。在iOS13中modalPresentationStyle的默认改为UIModalPresentationAutomatic,而在之前默认是UIModalPresentationFullScreen。
/* Definesthepresentationstylethatwillbeusedforthisviewcontrollerwhenitispresentedmodally.Setthispropertyontheviewcontrollertobepresented,notthepresenter. IfthispropertyhasbeensettoUIModalPresentationAutomatic,readingitwillalwaysreturnaconcretepresentationstyle.BydefaultUIViewControllerresolvesUIModalPresentationAutomatictoUIModalPresentationPageSheet,butothersystem-providedviewcontrollersmayresolveUIModalPresentationAutomatictootherconcretepresentationstyles. DefaultstoUIModalPresentationAutomaticoniOSstartinginiOS13.0,andUIModalPresentationFullScreenonpreviousversions.DefaultstoUIModalPresentationFullScreenonallotherplatforms. */ @property(nonatomic,assign)UIModalPresentationStylemodalPresentationStyleAPI_AVAILABLE(ios(3.2));
要改会原来模态视图样式,我们只需要把UIModalPresentationStyle设置为UIModalPresentationFullScreen即可。
ViewController*vc=[[ViewControlleralloc]init]; vc.title=@"presentVC"; UINavigationController*nav=[[UINavigationControlleralloc]initWithRootViewController:vc]; nav.modalPresentationStyle=UIModalPresentationFullScreen; [self.window.rootViewControllerpresentViewController:navanimated:YEScompletion:nil];
私有KVC
在使用iOS13运行项目时突然APP就crash掉了。定位到的问题是在设置UITextField的Placeholder也就是占位文本的颜色和字体时使用了KVC的方法:
[_textFieldsetValue:[UIColorredColor]forKeyPath:@"_placeholderLabel.textColor"]; [_textFieldsetValue:[UIFontsystemFontOfSize:14]forKeyPath:@"_placeholderLabel.font"];
可以将其替换为
_textField.attributedPlaceholder=[[NSAttributedStringalloc]initWithString:@"姓名"attributes:@{NSFontAttributeName:[UIFontsystemFontOfSize:14],NSForegroundColorAttributeName:[UIColorredColor]}];
并且只需要在初始化的时候设置attributedPlaceholder即富文本的占位文本,再重新赋值依然使用placeolder直接设置文本内容,样式不会改变。(想要这种效果的话需要在初始化attributedPlaceholder时的字符串不为空)
UniversalLink(通用链接)
在Xcode11中配置UniversalLink(通用链接)步骤:
在iOS13之前在其他APP去safari中打开UniversalLink(通用链接)系统匹配域名是全匹配,而在iOS13之后规则发生了变化,猜测是包含关系。比如在iOS13之前,如果UniversalLink(通用链接)为w.mydomain.com那么在微信或者其他APP访问www.mydomain.com然后点击去safari打开则不会拉起相应APP,而在iOS13则会拉起相应APP。
而在safari中输入的链接则依然和iOS之前一样,只有www.mydomain.com才会提示打开相应APP。
修改APP名称(修改DisplayName值)
- 在Xcode创建项目时默认的project.pbxproj中的所有PRODUCT_NAME="$(TARGET_NAME)";。
- 在Xcode11.0之前如果修改DisplayName时只是修改info.plist中的Bundledisplayname值,但是在Xcode11.0中修改该值则会把project.pbxproj中的一个PRODUCT_NAME改为修改后值,如果在项目中通过[NSBundlemainBundle]infoDictionary]取kCFBundleExecutableKey的就会有影响,并且对BuildSettings中的Packaing中的一些名称有影响,可能还会有其他影响有待关注。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。