Xcode 11 & iOS13 適配文檔

iOS13出來有一段時(shí)間了,最近才開始適配,著實(shí)有些晚了,記錄下自己踩到的坑; 持續(xù)更新...

[2019-08-26 ]: Xcode11 & iOS13真機(jī)'UIAlertView' Crash

*** Terminating app due to uncaught exception 'NSObjectNotAvailableException', reason: 'UIAlertView is deprecated and unavailable for UIScene based applications, please use UIAlertController!'

處理方式就顯而易見了贴硫,替換成UIAlertController,看來標(biāo)記為廢棄的還是盡量不用為好

[2019-08-19]: iOS 13 beta 7 : 子線程Crash伊者,App仍存活

2019-08-15日Apple發(fā)布了iOS 13 beta 7, 收到一系列新的反饋英遭,其中有一個(gè)問題比較奇怪,在觸發(fā)某些Case后亦渗,相關(guān)功能穩(wěn)定不可用挖诸,Debug測(cè)試發(fā)現(xiàn)在iOS 13 beta 7中,某個(gè)子線程遇到Swift強(qiáng)制解包(nil!)不會(huì)導(dǎo)致整個(gè)App Crash掉央碟,主線程卡頓一段時(shí)間后税灌,仍然可以正常的操作,但是依賴Crash的子線程的任務(wù)會(huì)掛掉亿虽,具體原因暫時(shí)未知菱涤,還在調(diào)研。

[2019-07-30]: -w -Xanalyzer -analyzer-disable-all-checks

Xcode11-beta4(僅在4洛勉,1粘秆、2、3&5沒有這個(gè)問題)中可能會(huì)遇到如下報(bào)錯(cuò)

<unknown>:0: error: unknown argument: '-w'
<unknown>:0: error: unknown argument: '-Xanalyzer'
<unknown>:0: error: unknown argument: '-analyzer-disable-all-checks'
Command CompileSwiftSources failed with a nonzero exit code
這個(gè)是因?yàn)镃ocoapods的inhibit_all_warnings!收毫、:inhibit_warnings => true導(dǎo)致的攻走,需要到Podfiile中注釋掉所有相關(guān)部分,如:

修改前:

# 全局關(guān)閉警告
inhibit_all_warnings! 
pod 'RxSwift', :inhibit_warnings => true

修改后:

# 全局關(guān)閉警告
# inhibit_all_warnings! 
pod 'RxSwift'#, :inhibit_warnings => true

參考鏈接: https://github.com/CocoaPods/CocoaPods/issues/9013


[2019-07-16]: StatusBar

之前可以使用如下方法獲取或修改StatusBar的一些屬性

if let statusBarWindow = UIApplication.shared.value(forKey: "statusBarWindow") as? UIWindow {
    statusBarWindow.alpha = 1 - statusBarWindow.alpha
}

現(xiàn)在會(huì)報(bào)錯(cuò)

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'App called -statusBar or -statusBarWindow on UIApplication: this code must be changed as there's no longer a status bar or status bar window. Use the statusBarManager object on the window scene instead.'

找了很久找到一些獲取屬性的方式此再,但是現(xiàn)在沒法更改屬性了昔搂,無論是直接改還是setValue(_: forKey:),都會(huì)崩掉输拇。

if #available(iOS 13.0, *) {
    #if swift(>=5.1)
    if let statusBarManager = UIApplication.shared.keyWindow?.windowScene?.statusBarManager,
        let localStatusBar = statusBarManager.perform(Selector(("createLocalStatusBar")))?.takeRetainedValue()
            as? UIView,
        let statusBar = localStatusBar.perform(Selector(("statusBar")))?.takeRetainedValue() as? UIView,
        let _statusBar = statusBar.value(forKey: "_statusBar") as? UIView {
        print(localStatusBar, statusBar, _statusBar)
    }
    #endif
} else {
    // Fallback on earlier versions
    if let statusBarWindow = UIApplication.shared.value(forKey: "statusBarWindow") as? UIWindow {
        statusBarWindow.alpha = 1 - statusBarWindow.alpha
    }
}

私有屬性KVC

使用私有API一時(shí)爽摘符,一直使用一直爽 蘋果一禁火葬場(chǎng)

iOS不再支持使用valueForKeysetValue: forKey等方式處理一些私有屬性策吠,下面列舉一下已經(jīng)發(fā)現(xiàn)的和替換方案逛裤。

UITextFiled: _placeholderLabel.textColor

// old code Swift
textFiled.setValue(UIColor.red, forKey: "_placeholderLabel.textColor")

替換方案

textFiled.attributedPlaceholder = NSMutableAttributedString(
    string: "Placeholder",
    attributes: [.foregroundColor: UIColor.red]
)

UISearchBar: value(forKey: "_searchField")

// old  code Swift
searchBar.value(forKey: "_searchField")

替換方案

#if swift(<5.1)
print(searchBar.value(forKey: "_searchField") ?? "Read Error")
#else
print(searchBar.searchTextField)
#endif

樣式 Or 行為變更

UISegmentedControl 樣式變更下圖

UISegmentedControl 樣式對(duì)比

處理方案:

    // swift 使用下面的方法自定義樣式
    control.setTitleTextAttributes(
        [.foregroundColor: UIColor.white],
        for: .selected)

    control.setBackgroundImage(
        UIImage(named: "iamgeName"),
        for: .normal,
        barMetrics: .default)

    control.setDividerImage(
        UIImage(named: "iamgeName"),
        forLeftSegmentState: .normal,
        rightSegmentState: .normal,
        barMetrics: .default)

UIModalPresentationStyle

ViewControllerpresent 的默認(rèn)style變了,如下圖:

UIModalPresentationStyle 默認(rèn)樣式

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末猴抹,一起剝皮案震驚了整個(gè)濱河市带族,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蟀给,老刑警劉巖蝙砌,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件阳堕,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡择克,警方通過查閱死者的電腦和手機(jī)嘱丢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來祠饺,“玉大人,你說我怎么就攤上這事汁政〉劳担” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵记劈,是天一觀的道長(zhǎng)勺鸦。 經(jīng)常有香客問我,道長(zhǎng)目木,這世上最難降的妖魔是什么换途? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮刽射,結(jié)果婚禮上军拟,老公的妹妹穿的比我還像新娘。我一直安慰自己誓禁,他們只是感情好懈息,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著摹恰,像睡著了一般辫继。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上俗慈,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天姑宽,我揣著相機(jī)與錄音,去河邊找鬼闺阱。 笑死炮车,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的馏颂。 我是一名探鬼主播示血,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼救拉!你這毒婦竟也來了难审?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤亿絮,失蹤者是張志新(化名)和其女友劉穎告喊,沒想到半個(gè)月后麸拄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡黔姜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年拢切,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片秆吵。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡淮椰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出纳寂,到底是詐尸還是另有隱情主穗,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布毙芜,位于F島的核電站忽媒,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏腋粥。R本人自食惡果不足惜晦雨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望隘冲。 院中可真熱鬧闹瞧,春花似錦、人聲如沸对嚼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽纵竖。三九已至漠烧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間靡砌,已是汗流浹背已脓。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留通殃,地道東北人度液。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像画舌,于是被迫代替她去往敵國(guó)和親堕担。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359