UIImageView、資源管理器
contentMode屬性
帶有scale單詞的:圖片有可能會拉伸
UIViewContentModeScaleToFill
將圖片拉伸至填充整個imageView
圖片顯示的尺寸跟imageView的尺寸是一樣的
帶有aspect單詞的:保持圖片原來的寬高比
UIViewContentModeScaleAspectFit
保證剛好能看到圖片的全部
UIViewContentModeScaleAspectFill
拉伸至圖片的寬度或者高度跟imageView一樣
沒有scale單詞的:圖片絕對不會被拉伸,保持圖片的原尺寸
UIViewContentModeCenter
UIViewContentModeTop
UIViewContentModeBottom
UIViewContentModeLeft
UIViewContentModeRight
UIViewContentModeTopLeft
UIViewContentModeTopRight
UIViewContentModeBottomLeft
UIViewContentModeBottomRight
小語法點
不能直接修改:OC對象的結構體屬性的成員
下面的寫法是錯誤的
imageView.frame.size = imageView.image.size;
- 正確寫法
CGRect tempFrame = imageView.frame;
tempFrame.size = imageView.image.size;
imageView.frame = tempFrame;
initWithImage:方法
- 利用這個方法創建出來的imageView的尺寸和傳入的圖片尺寸一樣
修改frame的3種方式
- 直接使用CGRectMake函數
imageView.frame = CGRectMake(100, 100, 200, 200);
- 利用臨時結構體變量
CGRect tempFrame = imageView.frame;
tempFrame.origin.x = 100;
tempFrame.origin.y = 100;
tempFrame.size.width = 200;
tempFrame.size.height = 200;
imageView.frame = tempFrame;
- 使用大括號{}形式
imageView.frame = (CGRect){{100, 100}, {200, 200}};
抽取重復代碼
將相同代碼放到一個新的方法中
不用的東西就變成方法的參數
圖片的加載方式
有緩存
UIImage *image = [UIImage imageNamed:@"圖片名"];
使用場合:圖片比較小、使用頻率較高
建議把需要緩存的圖片直接放到Images.xcassets
無緩存
NSString *file = [[NSBundle mainBundle] pathForResource:@"圖片名" ofType:@"圖片的擴展名"];
UIImage *image = [UIImage imageWithContentsOfFile:@"圖片文件的全路徑"];
使用場合:圖片比較大、使用頻率較小
不需要緩存的圖片不能放在Images.xcassets
放在Images.xcassets里面的圖片,只能通過圖片名去加載圖片
延遲做一些事情
[abc performSelector:@selector(stand:) withObject:@"123" afterDelay:10];
// 10s后自動調用abc的stand:方法,并且傳遞@"123"參數
- 音頻文件的簡單播放
// 創建一個音頻文件的URL(URL就是文件路徑對象)
NSURL *url = [[NSBundle mainBundle] URLForResource:@"音頻文件名" withExtension:@"音頻文件的擴展名"];
// 創建播放器
self.player = [AVPlayer playerWithURL:url];
// 播放
[self.player play];