UIViewContentMode
// 但凡在設(shè)置圖片模式的枚舉中包含Scale這個(gè)單詞的值,都會對原有的圖片進(jìn)行縮放
typedef NS_ENUM(NSInteger, UIViewContentMode) {
// 默認(rèn)屬性,按照"UIImageView"的寬高比縮放圖片至圖片填充整個(gè)UIImageView
UIViewContentModeScaleToFill,
// 按照"圖片的寬高"比例縮放圖片至圖片的寬度或者高度和UIImageView一樣,并且讓整個(gè)圖片都在UIImageView中,然后居中顯示
UIViewContentModeScaleAspectFit, // contents scaled to fit with fixed aspect. remainder is transparent
// 按照"圖片的寬高"比例縮放圖片至圖片的寬度和高度填充整個(gè)UIImageView,然后居中顯示
UIViewContentModeScaleAspectFill, // contents scaled to fill with fixed aspect. some portion of content may be clipped.
// 調(diào)用setNeedsDisplay方法時(shí),就會重新渲染圖片
UIViewContentModeRedraw, // redraw on bounds change (calls -setNeedsDisplay)
UIViewContentModeCenter, // contents remain same size. positioned adjusted.
UIViewContentModeTop,
UIViewContentModeBottom,
UIViewContentModeLeft,
UIViewContentModeRight,
UIViewContentModeTopLeft,
UIViewContentModeTopRight,
UIViewContentModeBottomLeft,
UIViewContentModeBottomRight,
};
Original Picture
Demo
UIViewContentModeScaleToFill
_leftImageView.contentMode = UIViewContentModeScaleToFill;
_rightImageView.contentMode = UIViewContentModeScaleToFill;
默認(rèn)填充模式醉途,將圖片拉伸或者壓縮至充滿整個(gè)容器。
UIViewContentModeScaleAspectFit
_leftImageView.contentMode = UIViewContentModeScaleAspectFit;
_rightImageView.contentMode = UIViewContentModeScaleAspectFit;
圖片并沒有變形医瘫,等比例縮放至父容器完全裝下圖片為止。
UIViewContentModeScaleAspectFill
_leftImageView.contentMode = UIViewContentModeScaleAspectFill;
_rightImageView.contentMode = UIViewContentModeScaleAspectFill;
// 推薦:將超出容器范圍的切除掉
// _leftImageView.clipsToBounds = YES;
// _rightImageView.clipsToBounds = YES;
圖片拉伸后居中顯示 , 寬度或者高度拉伸到了與父容器的寬度或者高度相等被丧,圖片并沒有變形衡便,但超出了父容器的范圍麻裳。
用.clipsToBounds = YES;
可以使圖片占滿整個(gè)父容器,并且不變形涨椒。
Summary
- 凡是帶有Scale單詞的屬性摊鸡,圖片都會被拉伸。
- 凡是帶有Ascept單詞屬性蚕冬,圖片會保持原來的寬高比免猾,即圖片不會變形。