記錄iOS13適配問題

1.UITextField 的私有屬性 _placeholderLabel 被禁止訪問
歷史代碼

[self.inputField setValue:[UIColor whiteColor] forKeyPath:@"_placeholderLabel.textColor"];

Xcode升級到11.3后拼缝,之前正常運行的代碼啟動后就會發(fā)生閃退

*** Terminating app due to uncaught exception 'NSGenericException', reason: 'Access to UITextField's _placeholderLabel ivar is prohibited. This is an application bug'
*** First throw call stack:
(
    0   CoreFoundation                      0x00007fff23c7127e __exceptionPreprocess + 350
    1   libobjc.A.dylib                     0x00007fff513fbb20 objc_exception_throw + 48
    2   CoreFoundation                      0x00007fff23c710bc +[NSException raise:format:] + 188
    3   UIKitCore                           0x00007fff4838e451 -[UITextField valueForKey:] + 84
    4   Foundation                          0x00007fff257138bb -[NSObject(NSKeyValueCoding) setValue:forKeyPath:] + 251
    ......
    12  UIKitCore                           0x00007fff47a0ef01 -[UIViewController _sendViewDidLoadWithAppearanceProxyObjectTaggingEnabled] + 83
    13  UIKitCore                           0x00007fff47a13e5a -[UIViewController loadViewIfRequired] + 1084
    14  UIKitCore                           0x00007fff479781e4 -[UINavigationController _updateScrollViewFromViewController:toViewController:] + 160
    15  UIKitCore                           0x00007fff479784e8 -[UINavigationController _startTransition:fromViewController:toViewController:] + 144
    16  UIKitCore                           0x00007fff479793b6 -[UINavigationController _startDeferredTransitionIfNeeded:] + 868
    17  UIKitCore                           0x00007fff4797a721 -[UINavigationController __viewWillLayoutSubviews] + 150
    18  UIKitCore                           0x00007fff4795b553 -[UILayoutContainerView layoutSubviews] + 217
    19  UIKitCore                           0x00007fff485784bd -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 2478
    20  QuartzCore                          0x00007fff2b131db1 -[CALayer layoutSublayers] + 255
    21  QuartzCore                          0x00007fff2b137fa3 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 517
    22  QuartzCore                          0x00007fff2b1438da _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 80
    23  QuartzCore                          0x00007fff2b08a848 _ZN2CA7Context18commit_transactionEPNS_11TransactionEd + 324
    24  QuartzCore                          0x00007fff2b0bfb51 _ZN2CA11Transaction6commitEv + 643
    25  UIKitCore                           0x00007fff480aa575 __34-[UIApplication _firstCommitBlock]_block_invoke_2 + 81
    26  CoreFoundation                      0x00007fff23bd429c __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 12
    27  CoreFoundation                      0x00007fff23bd3a08 __CFRunLoopDoBlocks + 312
    28  CoreFoundation                      0x00007fff23bce894 __CFRunLoopRun + 1284
    29  CoreFoundation                      0x00007fff23bce066 CFRunLoopRunSpecific + 438
    30  GraphicsServices                    0x00007fff384c0bb0 GSEventRunModal + 65
    31  UIKitCore                           0x00007fff48092d4d UIApplicationMain + 1621
    32  XtioniPhone                         0x000000010f398bd0 main + 112
    33  libdyld.dylib                       0x00007fff5227ec25 start + 1
    34  ???                                 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException

修改方法:UITextField有個attributedPlaceholder的屬性炊琉,我們可以自定義這個富文本來達(dá)到我們需要的結(jié)果他巨。iOS 13 通過 KVC 方式修改私有屬性顺饮,有 Crush 風(fēng)險努溃,謹(jǐn)慎使用今布。

NSMutableAttributedString *placeholderString = [[NSMutableAttributedString alloc] initWithString:placeholder attributes:@{NSForegroundColorAttributeName : self.placeholderColor}];
_textField.attributedPlaceholder = placeholderString;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末经备,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子部默,更是在濱河造成了極大的恐慌侵蒙,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件傅蹂,死亡現(xiàn)場離奇詭異纷闺,居然都是意外死亡,警方通過查閱死者的電腦和手機份蝴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門犁功,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人搞乏,你說我怎么就攤上這事波桩。” “怎么了请敦?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵镐躲,是天一觀的道長。 經(jīng)常有香客問我侍筛,道長萤皂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任匣椰,我火速辦了婚禮裆熙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己入录,他們只是感情好蛤奥,可當(dāng)我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著僚稿,像睡著了一般凡桥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蚀同,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天缅刽,我揣著相機與錄音,去河邊找鬼蠢络。 笑死衰猛,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的刹孔。 我是一名探鬼主播啡省,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼髓霞!你這毒婦竟也來了冕杠?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤酸茴,失蹤者是張志新(化名)和其女友劉穎分预,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體薪捍,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡笼痹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了酪穿。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凳干。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖被济,靈堂內(nèi)的尸體忽然破棺而出救赐,到底是詐尸還是另有隱情,我是刑警寧澤只磷,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布吉殃,位于F島的核電站蚯根,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜碉怔,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一毡代、第九天 我趴在偏房一處隱蔽的房頂上張望断盛。 院中可真熱鬧弯予,春花似錦苗沧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至网严,卻和暖如春飒焦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背屿笼。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留翁巍,地道東北人驴一。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像灶壶,于是被迫代替她去往敵國和親肝断。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,933評論 2 355