基礎(chǔ) (八) : 幀動(dòng)畫/plist

掌握

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;
未命名圖片1.png

未命名圖片.png

應(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;

未命名圖片2.png

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文件”

未命名圖片4.png

解析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;

}

未命名圖片5.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市毕箍,隨后出現(xiàn)的幾起案子弛房,更是在濱河造成了極大的恐慌,老刑警劉巖而柑,帶你破解...
    沈念sama閱讀 222,946評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件文捶,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡媒咳,警方通過(guò)查閱死者的電腦和手機(jī)拄轻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,336評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)伟葫,“玉大人恨搓,你說(shuō)我怎么就攤上這事。” “怎么了斧抱?”我有些...
    開封第一講書人閱讀 169,716評(píng)論 0 364
  • 文/不壞的土叔 我叫張陵常拓,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我辉浦,道長(zhǎng)弄抬,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,222評(píng)論 1 300
  • 正文 為了忘掉前任宪郊,我火速辦了婚禮掂恕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘弛槐。我一直安慰自己懊亡,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,223評(píng)論 6 398
  • 文/花漫 我一把揭開白布乎串。 她就那樣靜靜地躺著店枣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪叹誉。 梳的紋絲不亂的頭發(fā)上鸯两,一...
    開封第一講書人閱讀 52,807評(píng)論 1 314
  • 那天,我揣著相機(jī)與錄音长豁,去河邊找鬼钧唐。 笑死,一個(gè)胖子當(dāng)著我的面吹牛匠襟,可吹牛的內(nèi)容都是我干的钝侠。 我是一名探鬼主播,決...
    沈念sama閱讀 41,235評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼宅此,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了爬范?” 一聲冷哼從身側(cè)響起父腕,我...
    開封第一講書人閱讀 40,189評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎青瀑,沒想到半個(gè)月后璧亮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,712評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡斥难,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,775評(píng)論 3 343
  • 正文 我和宋清朗相戀三年枝嘶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哑诊。...
    茶點(diǎn)故事閱讀 40,926評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡群扶,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情竞阐,我是刑警寧澤缴饭,帶...
    沈念sama閱讀 36,580評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站骆莹,受9級(jí)特大地震影響颗搂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜幕垦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,259評(píng)論 3 336
  • 文/蒙蒙 一丢氢、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧先改,春花似錦疚察、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,750評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至猜嘱,卻和暖如春衅枫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背朗伶。 一陣腳步聲響...
    開封第一講書人閱讀 33,867評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工弦撩, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人论皆。 一個(gè)月前我還...
    沈念sama閱讀 49,368評(píng)論 3 379
  • 正文 我出身青樓益楼,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親点晴。 傳聞我的和親對(duì)象是個(gè)殘疾皇子披蕉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,930評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容