關於UIImageView的顯示問題——居中顯示或者
我們都知道在ios中,每一個UIImageView都有他的frame大小,但是如果圖片的大小和這個frame的大小不符合的時候會怎麼樣呢?在預設情況,圖片會被壓縮或者拉伸以填滿整個區域。
通過檢視UIView的屬性可以知道,view的contentMode屬性可以用來控制圖片的顯示情況。下面的設定可以讓圖片進行居中顯示。
imageView.contentMode = UIViewContentModeCenter;
這個居中是包括了,橫向和縱向都是居中。圖片不會拉伸或者壓縮,就是按照imageView的frame和圖片的大小來居中顯示的。
這裡有兩種情況:
1、圖片比view的區域更大。這個時候會擷取圖片的中間部位顯示在frame區域裡面。
2、圖片比view的區域更小。這個時候圖片會完整的顯示在frame的中間位置。
如果在預設情況,圖片的多出來的部分還是會顯示螢幕上。如果不希望超過frame的區域顯示在螢幕上要設定。clipsToBounds屬性。
imageView.clipsToBounds = YES;
最後一個問題,在iphone的retina螢幕上面,必須要設定,contentScaleFactor屬性。這個屬性的預設值是1。二對應的retina螢幕需要是2.可以通過下面的方式來設定:
[imageView setContentScaleFactor:[[UIScreen mainScreen] scale]];
但是用:
imageView.contentMode = UIViewContentModeCenter;
也有他的問題,就是在圖片不規則的時候,而且圖片的寬或者高比frame的寬高更小的時候,會出現空白的情況。
為了解決這種問題可以設定:
imageView.contentMode = UIViewContentModeScaleAspectFill;
這樣圖片會拉伸或者壓縮以適應frame的邊界,而且是適應更小的邊,這樣可以達成的效果是,圖片適應最小的邊鋪開顯示,更大的邊會超出frame,如果設定了clipsToBounds屬性為YES,那麼更大的邊就會被截斷。這樣達成更好的居中顯示效果,完整的程式碼如下:
UIImage *pic = [ UIImage imageNamed:@"IMG_0404.PNG"];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(20, 20, 240, 100 )];
[imageView setImage:pic];
[imageView setContentScaleFactor:[[UIScreen mainScreen] scale]];
imageView.contentMode = UIViewContentModeScaleAspectFill;
imageView.autoresizingMask = UIViewAutoresizingFlexibleHeight;
imageView.clipsToBounds = YES;
相關文章
- 關於CCSprite不能及時顯示的問題
- QWidget居中顯示
- 關於Spyder在高解析度顯示器下的選單圖示顯示不正確問題
- UILabel居中顯示的方法UI
- QT居中螢幕顯示QT
- qt視窗居中顯示QT
- java中有關日期的顯示問題 (轉)Java
- Oracle的SCN顯示問題Oracle
- bootstrap datetimepicker 中只顯示年或者只顯示月份boot
- UIImageView的圖片居中問題UIView
- 關於linux切換使用者只顯示$的問題Linux
- 關於流逝佈局作業7.0顯示問題詳解
- number型別的顯示問題型別
- [20160325]bbed 中文字元顯示的顯示問題字元
- secureCRT顯示亂碼問題Securecrt
- Qt 設定視窗居中顯示QT
- QT tableWidget 內容居中顯示QT
- CSS 導航欄元素居中顯示CSS
- Android控制元件居中顯示Android控制元件
- Qt5:視窗居中顯示QT
- Qt視窗螢幕居中顯示QT
- 如何解決關於TableView裡面cell隨機顯示的問題View隨機
- 關於oracle日期格式顯示格式Oracle
- toad顯示explain plan的問題AI
- 點選開關顯示或者隱藏input文字框
- Qt 讓彈出的視窗居中顯示QT
- phpmyadmin訪問顯示空白問題PHP
- bootstrap-table表格顯示問題boot
- 微信小程式tabBar顯示問題微信小程式tabBar
- CSDN文章釋出了顯示問題
- ubuntu 中文顯示亂碼問題Ubuntu
- PHP顯示MySQL亂碼問題PHPMySql
- tiff不正常顯示問題
- 關於 SAP ABAP 報表的多語言顯示問題試讀版
- Qt之設定窗體居中顯示QT
- Qt中設定視窗居中顯示QT
- Swift UIButton 圖片 文字 同時顯示 不顯示,細節問題SwiftUI
- 部落格園sakura主題只顯示每天一篇或者顯示不完隨筆bug的修復