掌握
UIImageView幀動(dòng)畫的使用
UIImage的2種加載方式
重復(fù)代碼的封裝抽取
文檔注釋的寫法
UIImageView幀動(dòng)畫相關(guān)屬性和方法
@property(nonatomic,copy) NSArray *animationImages;
需要播放的序列幀圖片數(shù)組(里面都是UIImage對(duì)象,會(huì)按順序顯示里面的圖片)
@property(nonatomic) NSTimeInterval animationDuration;
幀動(dòng)畫的持續(xù)時(shí)間
@property(nonatomic) NSInteger animationRepeatCount;
幀動(dòng)畫的執(zhí)行次數(shù)(默認(rèn)是無(wú)限循環(huán))
- (void)startAnimating;
開始執(zhí)行幀動(dòng)畫
-(void)stopAnimating;
停止執(zhí)行幀動(dòng)畫
-(BOOL)isAnimating;
是否正在執(zhí)行幀動(dòng)畫
UIImage的2種加載方式
方式一:有緩存(圖片所占用的內(nèi)存會(huì)一直停留在程序中)
+(UIImage *)imageNamed:(NSString *)name;
name是圖片的文件名
方式二:無(wú)緩存(圖片所占用的內(nèi)存會(huì)在一些特定操作后被清除)
+(UIImage *)imageWithContentsOfFile:(NSString *)path
-(id)initWithContentsOfFile:(NSString *)path;
path是圖片的全路徑
重復(fù)代碼的封裝抽取
當(dāng)一份代碼重復(fù)出現(xiàn)在程序的多處地方途乃,就會(huì)造成程序又臭又長(zhǎng)绍傲,當(dāng)這份代碼的結(jié)構(gòu)要修改時(shí),每一處出現(xiàn)這份代碼的地方都得修改耍共,導(dǎo)致程序的擴(kuò)展性很差
因此烫饼,要將重復(fù)出現(xiàn)的代碼抽取到某個(gè)方法中,在需要這份代碼的地方調(diào)用方法即可
抽取代碼的思路
將相同的代碼放到一個(gè)方法中
將不同的值當(dāng)做方法參數(shù)傳進(jìn)來(lái)
掌握
按鈕的多功能使用
@2x的含義
應(yīng)用程序圖標(biāo)试读、啟動(dòng)圖片的添加
狀態(tài)欄
在iOS7中杠纵,狀態(tài)欄默認(rèn)情況下歸控制器管理,比如狀態(tài)欄的樣式钩骇、狀態(tài)欄的是否可見
控制器通過(guò)重寫以下方法來(lái)控制狀態(tài)欄
設(shè)置狀態(tài)欄的樣式
(UIStatusBarStyle)preferredStatusBarStyle;
其中UIStatusBarStyleLightContent是白色樣式
設(shè)置狀態(tài)欄的可見性
- (BOOL)prefersStatusBarHidden;
應(yīng)用程序啟動(dòng)圖片
一個(gè)app在啟動(dòng)過(guò)程中會(huì)全屏顯示叫做Default.png的圖片
不同規(guī)格Default的使用場(chǎng)合
Default.png:非retina-iPhone屏幕比藻,320x480
Default@2x.png:retina-iPhone屏幕,640x960
Default-568h@2x.png:4inch的retina-iPhone屏幕倘屹,640x1136
Default-Portrait~ipad.png:非retain-iPad豎屏屏幕银亲,768x1024
Default-Portrait~ipad@2x.png:retain-iPad豎屏屏幕,1536x2048
Default-Landscape~ipad.png:非retain-iPad橫屏屏幕纽匙,1024x768
Default-Landscape~ipad@2x.png:retain-iPad橫屏屏幕务蝠,2048x1536
UIButton
UIButton有很多種狀態(tài),它提供了一些便捷屬性烛缔,可以直接獲取當(dāng)前狀態(tài)下的文字馏段、文字顏色轩拨、圖片等
@property(nonatomic,readonly,retain) NSString *currentTitle;
@property(nonatomic,readonly,retain)UIColor *currentTitleColor;
@property(nonatomic,readonly,retain)UIImage *currentImage;
@property(nonatomic,readonly,retain) UIImage
*currentBackgroundImage;
UIButton和UIImageView
相同點(diǎn)
都能顯示圖片
不同點(diǎn)
UIButton默認(rèn)情況就能監(jiān)聽點(diǎn)擊事件,而UIImageView默認(rèn)情況下不能
UIButton可以在不同狀態(tài)下顯示不同的圖片
UIButton既能顯示文字院喜,又能顯示圖片
如何選擇
UIButton:需要顯示圖片亡蓉,點(diǎn)擊圖片后需要做一些特定的操作
UIImageView:僅僅需要顯示圖片,點(diǎn)擊圖片后不需要做任何事情
UIImage:父類為NSObject,不是一個(gè)控件,只是一個(gè)圖片
NSArray和NSDictionary的使用
當(dāng)圖片內(nèi)容非常多時(shí)够坐,“根據(jù)index來(lái)設(shè)置內(nèi)容”的代碼就不具備擴(kuò)展性寸宵,要經(jīng)常改動(dòng)
為了改變現(xiàn)狀,可以考慮將圖片數(shù)據(jù)線保存到一個(gè)數(shù)組中元咙,數(shù)組中有序地放著很多字典梯影,一個(gè)字典代表一張圖片數(shù)據(jù),包含了圖片名庶香、圖片描述
@property (strong, nonatomic) NSArray *images;
由于只需要初始化一次圖片數(shù)據(jù)甲棍,因此放在get方法中初始化
將屬性放在get方法中初始化的方式,稱為“懶加載”\”延遲加載”
什么是Plist文件
直接將數(shù)據(jù)直接寫在代碼里面赶掖,不是一種合理的做法感猛。如果數(shù)據(jù)經(jīng)常改,就要經(jīng)常翻開對(duì)應(yīng)的代碼進(jìn)行修改奢赂,造成代碼擴(kuò)展性低
因此陪白,可以考慮將經(jīng)常變的數(shù)據(jù)放在文件中進(jìn)行存儲(chǔ),程序啟動(dòng)后從文件中讀取最新的數(shù)據(jù)膳灶。如果要變動(dòng)數(shù)據(jù)咱士,直接修改數(shù)據(jù)文件即可,不用修改代碼
一般可以使用屬性列表文件存儲(chǔ)NSArray或者NSDictionary之類的數(shù)據(jù)轧钓,這種屬性列表文件的擴(kuò)展名是plist序厉,因此也成為“Plist文件”
解析Plist文件
接下來(lái)通過(guò)代碼來(lái)解析Plist文件中的數(shù)據(jù)
獲得Plist文件的全路徑
NSBundle *bundle = [NSBundle mainBundle];
NSString *path = [bundle pathForResource:@"imageData" ofType:@"plist"];
加載plist文件
_images = [NSArray arrayWithContentsOfFile:path];
-(NSArray *)images
{
if (_images == nil) {
NSBundle *bundle = [NSBundle mainBundle];
NSString *path = [bundle pathForResource:@"imageData" ofType:@"plist"];
_images= [NSArray arrayWithContentsOfFile:path];
}
return _images;
}