根據(jù)定義可以看出 UIViewContentMode 是UIView的屬性,所以這里分別對(duì)UIImageView、UIView、UILabel、UIButton設(shè)置contentMode屬性來(lái)查看相應(yīng)效果。
通過(guò)測(cè)試可以看到,contentMode屬性的設(shè)置,在視覺(jué)上只對(duì)UIImageView起作用,對(duì)UIView、UILabel、UIButton都不起作用。
對(duì)于UIView,因?yàn)樗淖右晥D都已經(jīng)設(shè)置了自己的frame,位置是固定的,所以這里contentMode不起作用。
對(duì)于UILabel、UIButton,并沒(méi)有像預(yù)期的一樣,通過(guò)設(shè)置不同的contentMode,而改變UILabel、UIButton中文本或圖片內(nèi)容的填充樣式。
所以,對(duì)于contentMode屬性的主要探索就放在了UIImageView上。
先來(lái)看看測(cè)試過(guò)程中得到的所有效果圖:
typedef NS_ENUM(NSInteger, UIViewContentMode) {
//默認(rèn)樣式 圖片充滿整個(gè)輪廓,不按比例放大或縮小,圖片可能會(huì)變形
UIViewContentModeScaleToFill,
//圖片按比例放大或縮小,直到圖片和輪廓中相差比率較小的邊長(zhǎng)度達(dá)到一致,圖片可能會(huì)拉伸,但不會(huì)變形
UIViewContentModeScaleAspectFit,
//圖片按比例放大或縮小,直到圖片和輪廓中相差比率較大的邊長(zhǎng)度達(dá)到一致,圖片可能會(huì)拉伸,但不會(huì)變形
UIViewContentModeScaleAspectFill,
//調(diào)用setNeedsDisplay方法時(shí),會(huì)重新渲染圖片,以下操作,圖片均不會(huì)被拉伸,不變形
UIViewContentModeRedraw,
UIViewContentModeCenter,
UIViewContentModeTop,
UIViewContentModeBottom,
UIViewContentModeLeft,
UIViewContentModeRight,
UIViewContentModeTopLeft,
UIViewContentModeTopRight,
UIViewContentModeBottomLeft,
UIViewContentModeBottomRight,
};
歡迎各路大神不吝指教、糾正~