UIImageView加載圖檔注意事項
-
-
-
- UIImageView 加載本地圖檔
-
- UIImageView 建立的常用方法
- UIImageView image 的三種主要填充方式
- image 初始化本地圖檔對象注意事項
-
- image .jpg和.png圖檔的問題
- [UIImage imageNamed:] 的緩存問題/代替方法
-
-
UIImageView 加載本地圖檔
UIImageView 建立的常用方法
- 通過 initWithImage
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"26"]];
[self.view addSubview: imageView];
這個方法雖然沒有給 imageView 設定size,卻一樣可以加載圖檔顯示出來,是因為這個方法預設會加載圖檔本身的size大小
2.通過 init
UIImageView *imageView = [[UIImageView alloc] init];
//imageView.image = [UIImage imageNamed:@"26"];
[imageView setImage:[UIImage imageNamed:@"26"]];
[self.view addSubview: imageView];
這個方法這樣子寫卻顯示不出圖檔來的,原因是 imageView 還在沒有設定size, 就是大小都沒有,自然也就加載不出來了,還需frame才能加載出來
//imageView.frame = CGRectMake(0, 0, 120, 250);
//這個是設定frame的另外一種方式
imageView.frame = (CGRect){{0,0},{120,250}};
UIImageView image 的三種主要填充方式
紅色框範圍是imageView的位置大小
- 預設 UIViewContentModeScaleToFill
- UIViewContentModeScaleAspectFit
- UIViewContentModeScaleAspectFill 以上三種最常用最為代表,其他的不是很常用,可以根據自己設定了看看效果
image 初始化本地圖檔對象注意事項
image .jpg和.png圖檔的問題
1.如果通過 :imageNamed 建立Image對象
imageView.image = [UIImage imageNamed:@"26"]
a.如果圖檔是直接放在Assets.xcassets檔案下的,建立的話,不管是.jpg和.png都可以直接設定圖檔名稱即可:
imageView.image = [UIImage imageNamed:@“26”]
b.如果是直接放在工程檔案裡的,.jpg圖檔,就需要帶字尾才可以
imageView.image = [UIImage imageNamed:@“26.jpg”]
[UIImage imageNamed:] 的緩存問題/代替方法
由于imageNamed建立的圖檔對象會被加載到緩存裡,當項目大,本地圖檔過大或者圖檔較多的時候,全部使用這個方法建立圖檔顯示是不合适。
那麼還可以通過加載資源路徑的方式建立image:
NSString *imgPath = [[NSBundle mainBundle] pathForResource:@"26" ofType:@"jpg"];
imageView.image = [UIImage imageWithContentsOfFile:imgPath];
注意問題:當圖檔放在Assets.xcassets的時候,你會發覺 上面這個方法傳回imgPath = nil,在安裝包的包内容裡并沒有圖檔,隻有Assets.car,
是以通過[NSBundle mainBundle] 就拿不到圖檔資源路徑,
是以,這個方法的圖檔隻能放到工程檔案裡,不能放到Assets裡邊
是以,一般常用的圖示就直接通過imageNamed放在緩存裡,背景圖檔等較大的和不常用的就通過imageWithContentsOfFile加載圖檔