微博動(dòng)畫的實(shí)現(xiàn)
-
通過(guò)代碼加載storyboard的步驟
- 注意:通過(guò)storyboard啟動(dòng)柔逼,根控制器的view并不會(huì)在程序啟動(dòng)完成的時(shí)候(調(diào)用didFinishLaunching方法)添加到窗口
- 創(chuàng)建和UIScreen同樣大小的窗口
- 加載storyboard,并創(chuàng)建窗口的根控制器
- 顯示窗口:[self.window makeKeyAndVisible];
- 顯示歡迎界面的view狐肢,一定要給界面設(shè)置frame,否則界面不會(huì)顯示
- 將歡迎界面的view作為子控件添加到窗口上去
在Main.storyboard對(duì)應(yīng)的控制器中初始化模型對(duì)象和模型對(duì)應(yīng)的控制器荤懂,并以modal的形式展示出來(lái)
-
為按鈕添加動(dòng)畫效果的步驟
- 懶加載所有按鈕的數(shù)組itemButtons
- 在viewDidLoad方法中使用setUpAllBtns添加所有item按鈕
- 在setUpAllBtns中根據(jù)按鈕數(shù)組對(duì)item按鈕進(jìn)行布局
- 啟動(dòng)定時(shí)器,每隔一段時(shí)間讓一個(gè)按鈕做物理引擎動(dòng)畫,也就是消除btn的transform
-
歡迎界面的動(dòng)畫
- 動(dòng)畫效果:文字圖片慢慢消失,通過(guò)修改alpha值开仰,顯示用戶頭像并添加上移動(dòng)畫,有彈簧效果薪铜,慢慢顯示歡迎回來(lái)的文字众弓,通過(guò)修改alpha值
- 在didMoveToSuperview方法中添加動(dòng)畫,當(dāng)一個(gè)控件被添加到父控件時(shí)就會(huì)調(diào)用
-
自定義button
- 以后如果通過(guò)代碼設(shè)置子控件的位置隔箍,一般都是在layoutSubviews里面去寫
- layoutSubviews什么時(shí)候調(diào)用:只要父控件的frame一改變就會(huì)調(diào)用layoutSubviews谓娃,重新布局子控件
58同城引導(dǎo)頁(yè)的動(dòng)畫
- 核心:添加scrollView的代理,在scrollViewDidScroll方法中根據(jù)偏移量蜒滩,切換人物的圖片以及旋轉(zhuǎn)小太陽(yáng)
彩票項(xiàng)目 - 環(huán)境配置
模擬器和真機(jī)的尺寸跟啟動(dòng)圖片有關(guān)系
-
通過(guò)代碼創(chuàng)建窗口并顯示窗口的步驟
- 創(chuàng)建窗口
- 創(chuàng)建窗口的根控制器并添加到窗口
- 顯示窗口
劃分文件結(jié)構(gòu)
注意:UITabBarController控制器的view不是懶加載的滨达,在創(chuàng)建控制器的時(shí)候就會(huì)加載
彩票項(xiàng)目 - 自定義tabBar控制器
使用items數(shù)組保存所有控制器對(duì)應(yīng)按鈕的內(nèi)容(UITabBarItem),并進(jìn)行懶加載
在viewDidLoad方法中添加所有子控制器和自定義的tabBar
添加自定義的TabBar需要移除系統(tǒng)的TabBar俯艰,相當(dāng)于把TabBar上所有的按鈕移除捡遍,把一個(gè)控件移除父控件并不會(huì)馬上銷毀,一般是在下一次運(yùn)行循環(huán)的時(shí)候竹握,就會(huì)判斷這個(gè)對(duì)象有沒有強(qiáng)引用画株,如果沒有,才會(huì)銷毀
我們自己的TabBar的按鈕也需要模型啦辐,UITabBar上的按鈕交給UITabBarItem
項(xiàng)目實(shí)戰(zhàn) - 自定義導(dǎo)航控制器
load方法會(huì)在加載類的時(shí)候調(diào)用污秆,當(dāng)程序一啟動(dòng)的時(shí)候就會(huì)調(diào)用
initialize方法會(huì)在當(dāng)前類或者它的子類第一次使用的時(shí)候才會(huì)調(diào)用,可以在該方法中設(shè)置導(dǎo)航條的內(nèi)容
通過(guò)[UINavigationBar apperance]方法獲取當(dāng)前應(yīng)用下所有的導(dǎo)航條
通過(guò)[UINavigationBar apperanceWhenContainedIn:]方法獲取哪個(gè)類下面的導(dǎo)航條
在TabBar控制器添加子控制器的方法中昧甘,把控制器包裝成導(dǎo)航控制器
如果要設(shè)置背景圖片良拼,必須填UIBarMetricsDefault,默認(rèn)導(dǎo)航控制器的子控制器的view尺寸會(huì)變化
設(shè)置導(dǎo)航條背景圖片充边,一定要在導(dǎo)航條顯示之前設(shè)置庸推,需要在initialize方法中設(shè)置導(dǎo)航條的背景圖片
彩票項(xiàng)目 - 設(shè)置導(dǎo)航條內(nèi)容
- 設(shè)置導(dǎo)航條標(biāo)題顏色
// 設(shè)置導(dǎo)航條標(biāo)題顏色
NSMutableDictionary *titleAttr = [NSMutableDictionary dictionary];
titleAttr[NSForegroundColorAttributeName] = [UIColor whiteColor];
titleAttr[NSFontAttributeName] = [UIFont boldSystemFontOfSize:20];
[bar setTitleTextAttributes:titleAttr];
要設(shè)置導(dǎo)航條的內(nèi)容,需要在每個(gè)TabBarItem對(duì)應(yīng)的控制器中單獨(dú)設(shè)置
購(gòu)彩大廳導(dǎo)航條的內(nèi)容設(shè)置
// 左邊按鈕
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageWithOriRenderingImage:@"CS50_activity_image"] style:UIBarButtonItemStylePlain target:self action:@selector(active)];
- 我的彩票導(dǎo)航條的內(nèi)容設(shè)置
- (void)setUpNav
{
// 設(shè)置左右兩邊的按鈕
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
[btn setTitle:@"客服" forState:UIControlStateNormal];
[btn setImage:[UIImage imageNamed:@"FBMM_Barbutton"] forState:UIControlStateNormal];
// 自適應(yīng)尺寸
[btn sizeToFit];
UIBarButtonItem *leftItem = [[UIBarButtonItem alloc] initWithCustomView:btn];
// 左邊
self.navigationItem.leftBarButtonItem = leftItem;
// 右邊
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageWithOriRenderingImage:@"Mylottery_config"] style:UIBarButtonItemStylePlain target:self action:@selector(settting)];
}
- 注意:導(dǎo)航條的標(biāo)題可以封裝到TabBarItem中浇冰,因?yàn)槊恳粋€(gè)TabBarItem對(duì)應(yīng)一個(gè)控制器