UIImageView
標籤(空格分隔): ios基礎
contentMode屬性
帶有scale單詞的:圖片有可能會拉伸
- UIViewContentModeScaleToFill
- 將圖片拉伸至填充整個imageView
- 圖片顯示的尺寸跟imageView的尺寸是一樣的
- 帶有aspect單詞的:保持圖片原來的寬高比
- UIViewContentModeScaleAspectFit
- 保證剛好能看到圖片的全部
- UIViewContentModeScaleAspectFill
- 拉伸至圖片的寬度或者高度跟imageView一樣
- UIViewContentModeScaleAspectFit
- UIViewContentModeScaleToFill
沒有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];