哇擦擦,居然有人喜歡用iPhone的粗體模式,設(shè)置方式為“設(shè)置-通用-輔助功能-Bold Text”,看起來(lái)好丑,不過(guò)還是有人會(huì)用到這個(gè)模式的
然而,UIButton在這個(gè)模式下同時(shí)設(shè)置title和image會(huì)重疊啊,不知道是不是哪里的bug,當(dāng)然你的button設(shè)置的比這兩個(gè)東西加起來(lái)寬好多還能正常顯示,但是有時(shí)候就不會(huì)這么好了,例如你使用了UIButton的sizeToFit。。顯示效果是這個(gè)樣子的:

Snip20161029_2.png
某些情況下你有不能直接給button的image設(shè)置一個(gè)很大的imageInsets,因?yàn)楹枚嗳硕际钦DJ较碌陌?,你一改正常模式下看起?lái)就怪怪的了,這時(shí)候就得用代碼來(lái)搞了啊,可以針對(duì)于粗體模式下的button修改一個(gè)比較大的imageInsets 來(lái)讓它看起來(lái)正常一些,記得當(dāng)時(shí)QA提這個(gè)bug的時(shí)候很是頭大,不知道從哪里下手啊,然后當(dāng)時(shí)貌似是通過(guò)打斷點(diǎn)來(lái)看這兩種模式下字體有什么不同,然后再去針對(duì)性的搞得,代碼大概是這個(gè)樣子
//粗體模式下的字體是這個(gè):.SFUIText-Semibold,正常的忘記是啥了,不過(guò)判斷個(gè)這個(gè)就可以找到了,然后再設(shè)置btn的imageEdgeInsets就得以正常顯示了
if ([[UIFont systemFontOfSize:12].fontName isEqualToString:@".SFUIText-Semibold"]) {
self.btn_diamond.imageEdgeInsets = UIEdgeInsetsMake(0, -10, 0, 10);
}

Snip20161029_3.png
調(diào)整完之后大概就是醬嬸的,insets具體調(diào)多大就自己去試了,可能跟圖標(biāo)大小什么的也有關(guān)系,但是正常字體下的顯示就是沒(méi)有任何問(wèn)題啊,下面是正常字體下并沒(méi)有做任何調(diào)整的button

Snip20161029_4.png