UILabel的背景顏色錯位問題

UILabel繼承于UIView,但是有些時候又不太一樣。

比如setBackgroundColor:

UIImage *image = [UIImage imageNamed:@"image"];
UIColor *color = [UIColor colorWithPatternImage:image];
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, image.size.width, image.size.height)];
[label setBackgroundColor:color];
[self.view addSubview:label];

按道理說,控件大小是根據(jù)圖片大小來的。背景色應(yīng)該會剛好平鋪滿。
如果說把UILabel換成UIView,的確是這樣沒錯。

但是在UILabel上背景卻出現(xiàn)了錯位


左邊為UIView-setBackgroundColor,右邊為UILabel
UILabel -setBackgroundColor,背景圖片往左上角偏移了幾個像素。

setBackgroundColor不行,那我換一種設(shè)置背景的方式。對通過對layer層操作同樣可以對View的背景進(jìn)行設(shè)置。

view.layer.contents = (id)image.CGImage;

但是這個方法對UILabel又無效!設(shè)置之后背景一片空白。

UILabel.layer.contents并不能有效地設(shè)置背景圖。

此外,我驗證過UIButton, UIImageView, UITextField, UITextView等常用控件。以上兩種方式都可以正常設(shè)置背景,那是不是UILabel就這么裝怪,不支持背景圖片呢?如果我們需要一個有背景的Label又應(yīng)該怎么辦呢?

1、很容易想到的就是自定義,在UILabel下放一個同大小的View,用于呈現(xiàn)背景,UILabel本身背景透明即實現(xiàn)相同效果。
2、很神奇的是我發(fā)現(xiàn)了一個現(xiàn)象,通過ib創(chuàng)建的UILabel,在setBackgroundColor時,居然又正常顯示了。

就說明UILabel其實是可以正常顯示的?
在之前使用code初始化控件時,我對UILabel初始化init,addSubViewsetBackgroundColor。
后來使用ib創(chuàng)建控件,同樣只是將UILabel拖到視圖上,然后通過代碼設(shè)置顏色。
均沒有對UILabel進(jìn)行過其他屬性的改變。所以得出的結(jié)論是使用代碼初始化的控件,和通過ib初始化的控件。他們有某些屬性默認(rèn)是不同的。


我沒有找出這個屬性。先記錄問題。解決后補(bǔ)充。如果有大神知道,請指教。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在iOS中隨處都可以看到絢麗的動畫效果,實現(xiàn)這些動畫的過程并不復(fù)雜,今天將帶大家一窺iOS動畫全貌。在這里你可以看...
    F麥子閱讀 5,262評論 5 13
  • 在iOS中隨處都可以看到絢麗的動畫效果,實現(xiàn)這些動畫的過程并不復(fù)雜,今天將帶大家一窺ios動畫全貌。在這里你可以看...
    每天刷兩次牙閱讀 8,688評論 6 30
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,153評論 4 61
  • 顧意艾禮 “今天的課就上到這里,下課?!?/div>
    _Vincent閱讀 258評論 0 0
  • 據(jù)有關(guān)資料統(tǒng)計:我國70%的成年婦女存在著不同程度的婦科炎癥,這不僅威脅著女性自身健康,可能還會遺害后代,感染胎兒...
    北京EIMASE閱讀 5,891評論 0 0

友情鏈接更多精彩內(nèi)容