UIView常見(jiàn)控件
UILabel
- 什么是UILabel?
- UILabel極其常用蚁署,功能比較專一:顯示文字
- UILabel的常見(jiàn)屬性
- 顯示的文字
@property(nonatomic,copy) NSString *text;
- 字體
@property(nonatomic,retain) UIFont *font; ``` - 文字顏色 ```obj @property(nonatomic,retain) UIColor *textColor; ``` - 對(duì)齊模式(比如左對(duì)齊挂绰、居中對(duì)齊、右對(duì)齊) ```obj @property(nonatomic)NSTextAlignment textAlignment; ``` - 文字行數(shù) ```obj @property(nonatomic) NSInteger numberOfLines; ``` - 換行模式 ```obj @property(nonatomic) NSLineBreakMode lineBreakMode; ```
- 顯示的文字
-
UILabel的各種屬性又包含很多屬性,讀者可自行查找
UIImageView
-
什么是UIImageView?
- UIImageView極其常用,功能比較專一:顯示圖片
-
UIImageView的常見(jiàn)屬性
- 顯示的圖片
@property(nonatomic,retain) UIImage *image;
```- 顯示的動(dòng)畫(huà)圖片
@property(nonatomic,copy) NSArray *animationImages; ``` - 動(dòng)畫(huà)圖片的持續(xù)時(shí)間 ```obj @property(nonatomic) NSTimeInterval animationDuration; ``` - 動(dòng)畫(huà)的播放次數(shù)(默認(rèn)是0,代表無(wú)限播放) ```obj @property(nonatomic) NSInteger animationRepeatCount; ```
- 顯示的圖片
-
UIImmageView的常見(jiàn)方法
- (void)startAnimating; // 開(kāi)始動(dòng)畫(huà)
- (void)stopAnimating; // 停止動(dòng)畫(huà)
- (BOOL)isAnimating; // 是否正在執(zhí)行動(dòng)畫(huà)
UIImmageView的contentMode屬性
-
帶有scale單詞的:圖片有可能會(huì)拉伸
- UIViewContentModeScaleToFill
- 將圖片拉伸至填充整個(gè)imageView
- 圖片顯示的尺寸跟imageView的尺寸是一樣的
- 帶有aspect單詞的:保持圖片原來(lái)的寬高比
- UIViewContentModeScaleAspectFit
- 保證剛好能看到圖片的全部
- UIViewContentModeScaleAspectFill
- 拉伸至圖片的寬度或者高度跟imageView一樣
- UIViewContentModeScaleAspectFit
- UIViewContentModeScaleToFill
-
沒(méi)有scale單詞的:圖片絕對(duì)不會(huì)被拉伸均践,保持圖片的原尺寸
- UIViewContentModeCenter
- UIViewContentModeTop
- UIViewContentModeBottom
- UIViewContentModeLeft
- UIViewContentModeRight
- UIViewContentModeTopLeft
- UIViewContentModeTopRight
- UIViewContentModeBottomLeft
- UIViewContentModeBottomRight
-
initWithImage:方法
- 利用這個(gè)方法創(chuàng)建出來(lái)的imageView的尺寸和傳入的圖片尺寸一樣
圖片類UIImage
- 一個(gè)UIImage對(duì)象代表一張圖片,一般通過(guò)imageNamed:方法就可以通過(guò)文件名加載項(xiàng)目中的圖片(該方法存在緩存)或者通過(guò)imageWithContentsOfFile:(該方法沒(méi)有緩存)
UIImage *image = [UIImage imageNamed:@"lufy"]; UIImage *actionImage = [UIImage imageWithContentsOfFile:path];
UIButton
- 什么是按鈕?
- 還有一個(gè)非常重要的UI控件---UIButton摩幔,俗稱“按鈕”
- 一般情況下彤委,點(diǎn)擊某個(gè)控件后,會(huì)做出相應(yīng)反應(yīng)的都是按鈕
- 按鈕的功能比較多或衡,既能顯示文字焦影,又能顯示圖片,還能隨時(shí)調(diào)整內(nèi)部圖片和文字的位置
- UIButton的常見(jiàn)設(shè)置
- 設(shè)置按鈕的文字
- (void)setTitle:(NSString *)title forState:(UIControlState)state;
- 設(shè)置按鈕的文字顏色
- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state; ``` - 設(shè)置按鈕內(nèi)部的小圖片 ```obj - (void)setImage:(UIImage *)image forState:(UIControlState)state; ``` - 設(shè)置按鈕的背景圖片 ```obj - (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state; ``` - 設(shè)置按鈕的文字字體(需要拿到按鈕內(nèi)部的label來(lái)設(shè)置) ```obj btn.titleLabel.font = [UIFont systemFontOfSize:13]; ```
- 設(shè)置按鈕的文字
Storyboard到代碼的轉(zhuǎn)換
// 創(chuàng)建一個(gè)自定義的按鈕
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
// 默認(rèn)狀態(tài)的背景
[btn setBackgroundImage:[UIImage imageNamed:@"btn_01"] forState:UIControlStateNormal];
// 默認(rèn)狀態(tài)的文字
[btn setTitle:@"點(diǎn)我啊" forState:UIControlStateNormal];
// 默認(rèn)狀態(tài)的文字顏色
[btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
課堂小語(yǔ)法點(diǎn)
- 不能直接修改:OC對(duì)象的結(jié)構(gòu)體屬性的成員
- 下面的寫(xiě)法是錯(cuò)誤的
imageView.frame.size = imageView.image.size;
- 正確寫(xiě)法
CGRect tempFrame = imageView.frame;
tempFrame.size = imageView.image.size;
imageView.frame = tempFrame;
修改frame的3種方式
- 直接使用CGRectMake函數(shù)
imageView.frame = CGRectMake(100, 100, 200, 200);
- 利用臨時(shí)結(jié)構(gòu)體變量
CGRect tempFrame = imageView.frame;
tempFrame.origin.x = 100;
tempFrame.origin.y = 100;
tempFrame.size.width = 200;
tempFrame.size.height = 200;
imageView.frame = tempFrame;
- 使用大括號(hào){}形式
imageView.frame = (CGRect){{100, 100}, {200, 200}};
-
抽取重復(fù)代碼
- 將相同代碼放到一個(gè)新的方法中
- 不用的東西就變成方法的參數(shù)
-
圖片的加載方式
- 有緩存
UIImage *image = [UIImage imageNamed:@"圖片名"];
- 使用場(chǎng)合:圖片比較小封断、使用頻率較高 - 建議把需要緩存的圖片直接放到Images.xcassets
- 無(wú)緩存
NSString *file = [[NSBundle mainBundle] pathForResource:@"圖片名" ofType:@"圖片的擴(kuò)展名"]; UIImage *image = [UIImage imageWithContentsOfFile:@"圖片文件的全路徑"];
- 使用場(chǎng)合:圖片比較大斯辰、使用頻率較小 - 不需要緩存的圖片不能放在Images.xcassets
- 放在Images.xcassets里面的圖片,只能通過(guò)圖片名去加載圖片
-
什么是NSBundle?
-
怎么找創(chuàng)建的程序包內(nèi)容
-
- 延遲做一些事情
[abc performSelector:@selector(stand:) withObject:@"123" afterDelay:10];
// 10s后自動(dòng)調(diào)用abc的stand:方法坡疼,并且傳遞@"123"參數(shù)
- 音頻文件的簡(jiǎn)單播放
// 創(chuàng)建一個(gè)音頻文件的URL(URL就是文件路徑對(duì)象)
NSURL *url = [[NSBundle mainBundle] URLForResource:@"音頻文件名" withExtension:@"音頻文件的擴(kuò)展名"];
// 創(chuàng)建播放器
self.player = [AVPlayer playerWithURL:url];
// 播放
[self.player play];
- 優(yōu)秀的封裝代碼
- (void)settingData{ // 設(shè)置數(shù)據(jù) self.descLabel.text = [NSString stringWithFormat:@"當(dāng)前第%zd張,總共%zd張", self.currentIndex, kMaxIndex]; self.imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%zd", self.currentIndex]];
}
```
音樂(lè)播放器
- 要點(diǎn)一:毛玻璃效果
- 代碼實(shí)現(xiàn)
// 1.1 創(chuàng)建毛玻璃 UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:self.bgImageView.bounds]; toolBar.barStyle = UIBarStyleBlack; //添加工具條到要實(shí)現(xiàn)毛玻璃效果的容器中 [self.bgImageView addSubview:toolBar]; ``` - 注意:在storyboard中ImageView無(wú)法添加子控件彬呻,而代碼可以實(shí)現(xiàn)這個(gè)功能。
- 要點(diǎn)二:音樂(lè)播放
- 代碼實(shí)現(xiàn)
- 首先要導(dǎo)入<AVFoundation/AVFoundation.h>頭文件
// 1.2 創(chuàng)建播放器
NSURL *url = [NSURL fileURLWithPath:path];
AVPlayerItem *playerItem = [[AVPlayerItem alloc] initWithURL:url];
self.player = [[AVPlayer alloc] initWithPlayerItem:playerItem];
//播放音樂(lè)
[self.player play];
```
- 另一種播放音樂(lè)代碼是添加音頻文件的URL,此前已經(jīng)提到闸氮,這里就不詳述了剪况。 - 代碼實(shí)現(xiàn)
關(guān)于內(nèi)存管理
- 批量圖片加載可使用無(wú)緩存加載
- 圖片對(duì)象使用完及時(shí)釋放
- 通過(guò)懶加載方式加載使用的圖片