iOS開發(fā)隨筆(Xcode11+iOS13兼容)

????蘋果要求6.30日前商店 App 需升級到 iOS13 sdk,百度了一下相關(guān)資料篙耗,并且做了一下升級,發(fā)現(xiàn) Xcode11 api文檔做了許多改動宪赶,估計底層實現(xiàn)變更了∽谕洌現(xiàn)在記錄如下:

UISegmentedControl

????默認樣式改變(UI有要求,務(wù)必優(yōu)化)搂妻。 iOS13以上對于通用的僅顏色UI的變更蒙保,可以通過創(chuàng)建子類來做覆蓋,設(shè)置一個自定義tintColor 替代欲主。 可以通過下面這三個方法設(shè)置純色圖片來還原之前的樣式邓厕。

- (void)setDividerImage:(nullable UIImage *)dividerImage forLeftSegmentState:(UIControlState)leftState rightSegmentState:(UIControlState)rightState barMetrics:(UIBarMetrics)barMetrics
- (void)setBackgroundImage:(nullable UIImage *)backgroundImage forState:(UIControlState)state barMetrics:(UIBarMetrics)barMetrics
- (void)setTitleTextAttributes:(nullable NSDictionary<NSAttributedStringKey,id> *)attributes forState:(UIControlState)state API_AVAILABLE(ios(5.0)) UI_APPEARANCE_SELECTOR;

Dark Mode

????若不想支持深夜模式 逝嚎,只需要在Info.plist下 新增鍵User Interface Style 值為Light即可。

模態(tài)彈出默認交互改變

????iOS 13新增了一個UIModalPresentationAutomatic详恼,系統(tǒng)會默認UIModalPresentationStyleUIModalPresentationAutomatic 补君,并且模態(tài)推出現(xiàn)在默認會 get 到UIModalPresentationPageSheet,通過運行時新寫一個 get 方法與系統(tǒng)方法交換,并且將UIModalPresentationPageSheet改為UIModalPresentationFullScreen即可,比較暴力昧互,如果有指定UIModalPresentationPageSheet的可以通過額外屬性區(qū)分挽铁。

+(void)initialize{
  // Xcode11+ iOS13兼容擴展  適配modalPresentationStyle導致的問題
  Method systemGetModalPresentationStyle = class_getInstanceMethod(self.class, @selector(modalPresentationStyle));
  Method ccGetModalPresentationStyle = class_getInstanceMethod(self.class, @selector(cc_modalPresentationStyle));
  if (!class_addMethod(self.class, @selector(modalPresentationStyle), method_getImplementation(systemGetModalPresentationStyle), method_getTypeEncoding(systemGetModalPresentationStyle))) {
      method_exchangeImplementations(systemGetModalPresentationStyle, ccGetModalPresentationStyle);
  }
}
- (UIModalPresentationStyle)cc_modalPresentationStyle{
    UIModalPresentationStyle modalPresentationStyle  = [self cc_modalPresentationStyle];

    if (modalPresentationStyle == (UIModalPresentationStyle)-2) {
        modalPresentationStyle = UIModalPresentationFullScreen;
    }
    if (modalPresentationStyle == UIModalPresentationPageSheet){
         modalPresentationStyle = UIModalPresentationFullScreen;
    }
    return modalPresentationStyle;

}

私有方法KVC 不允許使用

目前發(fā)現(xiàn)的有如下幾種

  1. UITextFieldvalueForKey:@"_placeholderLabel.textColor"

    使用attributedPlaceholder替代,可以使用子類或者擴展來優(yōu)化

  2. UISearchBarvalueForKey:@"_searchField"

     UITextField *searchField;
        if ([UIDevice currentDevice].systemVersion.floatValue > 12.3) {
              searchField = searchBar.searchTextField;
             
        }else{
            searchField = [searchBar valueForKey:@"_searchField"];
        }
    
  3. [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];

    可以在基類下使用 `UIView` 來替代設(shè)置 `StatusBar` 的背景顏色敞掘。
    

UIStatusBarStyle

iOS以上 UIStatusBarStyleDefault 會跟隨系統(tǒng)深夜模式自動變化叽掘,如果不支持深夜模式的 App 可以通過宏調(diào)整

MPMoviePlayerController

使用 AVKit 替換即可

LaunchImage

????要求使用 LaunchScreen.storyboard,刪除 LaunchImage.assets玖雁,新建 LaunchScreenImage更扁,修改Content.json 如下,設(shè)置對應(yīng)大小圖片赫冬,在 StoryBoard 新建 ImageView 設(shè)置約束浓镜,若需要滿屏,調(diào)整不遵守安全間距即可

{
  "images" : [
     {
       "idiom" : "iphone",
       "scale" : "1x"
     },
     {
       "idiom" : "iphone",
       "scale" : "2x"
     },
     {
       "idiom" : "iphone",
       "filename" : "Default-736.png",
       "scale" : "3x"
     },
    {
      "idiom" : "iphone",
      "subtype" : "retina4",
      "scale" : "1x"
    },
    {
      "idiom" : "iphone",
      "filename" : "Default-568.png",
      "subtype" : "retina4",
      "scale" : "2x"
    },
    {
      "idiom" : "iphone",
      "subtype" : "retina4",
      "scale" : "3x"
    },
    {
      "idiom" : "iphone",
      "filename" : "Default-736.png",
      "subtype" : "736h",
      "scale" : "3x"
    },
    {
      "idiom" : "iphone",
      "filename" : "Default-667.png",
      "subtype" : "667h",
      "scale" : "2x"
    },
    {
      "idiom" : "iphone",
      "filename" : "Default-812.png",
      "subtype" : "2436h",
      "scale" : "3x"
    },
    {
      "idiom" : "iphone",
      "filename" : "Default-1242.png",
      "subtype" : "2688h",
      "scale" : "3x"
    },
    {
      "idiom" : "iphone",
      "filename" : "Default-828.png",
      "subtype" : "1792h",
      "scale" : "2x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

UITextField 設(shè)置LeftView及RightView

????iOS13 在設(shè)置左右視圖是 UIImageView 的時候面殖,需要在 UIImageView 外層包裹一次 UIView 視圖竖哩,才能保證想要的間距效果〖沽牛可以通過交互方法重寫 setLeftViewsetRightView相叁,在外層包裹 UIView ,并賦值相應(yīng) frame。若有特殊配置辽幌,可以通過判斷視圖類增淹,做針對性包裹。

UISearchBar 黑線處理導致崩潰

`NSClassFromString(@"UISearchBarBackground")`

藍牙權(quán)限需要申請

如果有藍牙使用的App乌企,需要設(shè)置權(quán)限獲取

第三方SDK升級

注:目前僅發(fā)現(xiàn)這些必須要修正的問題, UIWebView 升級改造需要在 2020 年底以前完成虑润。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市加酵,隨后出現(xiàn)的幾起案子拳喻,更是在濱河造成了極大的恐慌,老刑警劉巖猪腕,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冗澈,死亡現(xiàn)場離奇詭異,居然都是意外死亡陋葡,警方通過查閱死者的電腦和手機亚亲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人捌归,你說我怎么就攤上這事肛响。” “怎么了惜索?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵特笋,是天一觀的道長。 經(jīng)常有香客問我门扇,道長雹有,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任臼寄,我火速辦了婚禮霸奕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘吉拳。我一直安慰自己质帅,他們只是感情好,可當我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布留攒。 她就那樣靜靜地躺著煤惩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪炼邀。 梳的紋絲不亂的頭發(fā)上魄揉,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天,我揣著相機與錄音拭宁,去河邊找鬼洛退。 笑死,一個胖子當著我的面吹牛杰标,可吹牛的內(nèi)容都是我干的兵怯。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼腔剂,長吁一口氣:“原來是場噩夢啊……” “哼媒区!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起掸犬,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤袜漩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后湾碎,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宙攻,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年胜茧,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡呻顽,死狀恐怖雹顺,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情廊遍,我是刑警寧澤嬉愧,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站喉前,受9級特大地震影響没酣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜卵迂,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一裕便、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧见咒,春花似錦偿衰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至宝当,卻和暖如春视事,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背庆揩。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工俐东, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人盾鳞。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓犬性,卻偏偏與公主長得像,于是被迫代替她去往敵國和親腾仅。 傳聞我的和親對象是個殘疾皇子乒裆,可洞房花燭夜當晚...
    茶點故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容