1.KVC訪問私有屬性的崩潰問題
在Xcode11上使用- (void)setValue:(nullable id)value forKeyPath:(NSString *)keyPath方法訪問私有屬性磁餐,編譯時(shí)會(huì)崩潰欺殿,例如:
[textField setValue:[UIColorredColor]forKeyPath:@"_placeholderLabel.textColor"];///崩潰[textField setValue:[UIFontsystemFontOfSize:14]forKeyPath:@"_placeholderLabel.font"];
2.即將廢棄的LaunchImage
隨著蘋果設(shè)備的型號(hào)日益增多,利用LaunchImage來(lái)設(shè)置啟動(dòng)圖顯然顯得不夠明智。
替代方式:使用LaunchScreen來(lái)設(shè)置啟動(dòng)圖。LaunchScreen是iOS8引入的,支持AutoLayout+SizeClass,所以用起來(lái)十分方便。據(jù)消息巩步,明年4月份后,所有app必須提供LaunchScreen了桦踊,盡早替換吧椅野。
3.presentViewController的問題
iOS 13 的 presentViewController 默認(rèn)有視差效果,模態(tài)出來(lái)的界面現(xiàn)在默認(rèn)都下滑返回。 一些頁(yè)面必須要點(diǎn)確認(rèn)才能消失的竟闪,需要適配离福。如果項(xiàng)目中頁(yè)面高度全部是屏幕尺寸,那么多出來(lái)的導(dǎo)航高度會(huì)出現(xiàn)問題炼蛤。所以手動(dòng)設(shè)置一下Style吧
let mainViewController=UIView()// 即需要被present的viewmainViewController.modalPresentationStyle=.fullScreenself.present(mainViewController,animated:true,completion:nil)
注意必須是在跳傳的時(shí)候設(shè)置才有用妖爷,個(gè)人體驗(yàn)了一把。
4.增加藍(lán)牙權(quán)限申請(qǐng)
iOS13以前理朋,使用藍(lán)牙時(shí)可以直接用絮识,不會(huì)出現(xiàn)權(quán)限提示,iOS13后嗽上,再使用就會(huì)提示了次舌。 在info.plist里增加
<key>NSBluetoothAlwaysUsageDescription</key><string>我們需要使用您的藍(lán)牙</string>`
5.MPMoviePlayerController 徹底棄用
MPMoviePlayerController 在 iOS 9 開始被棄用,如果在 iOS 13 中繼續(xù)使用的話會(huì)直接拋出異常:***Terminating app due to uncaught exception'NSInvalidArgumentException',reason:'MPMoviePlayerController is no longer available. Use AVPlayerViewController in AVKit.'
6.UISearchDisplayController徹底棄用
在 iOS 8 之前兽愤,我們?cè)?UITableView 上添加搜索框需要使用 UISearchBar + UISearchDisplayController 的組合方式彼念。
在 iOS 8 之后,蘋果就已經(jīng)推出了 UISearchController 來(lái)代替這個(gè)組合方式浅萧。在 iOS 13 中国拇,如果還繼續(xù)使用 UISearchDisplayController會(huì)直接導(dǎo)致崩潰,崩潰信息如下
Terminating app due to uncaught exception'NSGenericException',reason:'UISearchDisplayController is no longer supported when linking against this version of iOS. Please migrate your application to UISearchController.'
解決方法:使用UISearchController代替
8.APP 底部有自定義tabbar惯殊,彈出頁(yè)面后關(guān)閉,底部的tabbar文字顏色變?yōu)樗{(lán)色了也殖,
解決辦法:在自定義標(biāo)簽欄那里判斷一下土思,
if #available(iOS 13.0, *){
self.tabBar.unselectedItemTintColor = UIColor.init(hex: "a1a1a1")
self.tabBar.tintColor = UIColor.init(hex: "30b0b5")
} else{
item.setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.init(hex: "a1a1a1")], for: .normal)
item.setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.init(hex: "30b0b5")], for: .selected)
}