国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

十分鐘搭建App主流框架

2019-11-14 18:22:43
字體:
來源:轉載
供稿:網友

搭建主流框架界面

  • 0.達成效果

    Snip20150904_5.png
    • 我們玩iPhone應用的時候,有沒發現大部分的應用都是上圖差不多的結構,下面的TabBar控制器可以切換子控制器,上面又有Navigation導航條
    • 我們本文主要是搭建主體的框架,數據暫時沒有添加

分析做項目的基本流程

  • 1.搭建項目主框架
    • (1)先搭建tabBarController(下面有一條)
    • (2)再搭建NavigationController(上面有一條,并且每個子控制器的不一樣)
  • 2.思考開發方式
    • (1)storyboard搭建(界面很少的時候使用)
    • (2)純代碼搭建(界面超過5個的時候使用,易于管理,商業項目中,一般都使用這種方式)

從0開始搭建主流框架(純代碼)

1.準備工作

  • 環境部署

Snip20150904_11.png

2.初步搭建基本界面

  • 第一步 設計目錄(根據模塊化+MVC思想,創建基本文件目錄與文件)
    • 模塊化思想創建目錄路徑(一般先在真實路徑下創建,再拖到項目中)
    • 自定義TabBarController

Snip20150904_4.png
  • 第二步 上代碼(在AppDelegate.m內設置窗口啟動根控制器)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    // 1.創建窗口    self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];    // 2.設置窗口的根控制器    CYXTabBarController *tabBarVC = [[CYXTabBarController alloc]init];    self.window.rootViewController = tabBarVC;    // 3.顯示窗口    [self.window makeKeyAndVisible];    return YES;}
  • 第三步,在CYXTabBarController.m內創建并添加子控制器
- (void)viewDidLoad {    [super viewDidLoad];    // 1.添加第一個控制器    // 1.1 初始化    CYXOneViewController *oneVC = [[CYXOneViewController alloc]init];    // 1.2 把oneVC添加為UINavigationController的根控制器    UINavigationController *nav1 = [[UINavigationController alloc]initWithRootViewController:oneVC];    // 設置tabBar的標題    nav1.title = @"首頁";    [nav1.navigationBar setBackgroundImage:[UIImage imageNamed:@"commentary_num_bg"] forBarMetrics:UIBarMetricsDefault];    // 設置tabBar的圖標    nav1.tabBarItem.image = [UIImage imageNamed:@"tab_home_icon"];    // 設置navigationBar的標題    oneVC.navigationItem.title = @"首頁";    // 設置背景色(這些操作可以交給每個單獨子控制器去做)    oneVC.view.backgroundColor = [UIColor whiteColor];    // 1.3 把UINavigationController交給UITabBarController管理    [self addChildViewController:nav1];    // 2.添加第2個控制器    CYXTwoViewController *twoVC = [[CYXTwoViewController alloc]init];    UINavigationController *nav2 = [[UINavigationController alloc]initWithRootViewController:twoVC];    nav2.title = @"技術";    nav2.tabBarItem.image = [UIImage imageNamed:@"js"];    twoVC.navigationItem.title = @"技術";    twoVC.view.backgroundColor = [UIColor blueColor];    [self addChildViewController:nav2];    // 3.添加第3個控制器    CYXThreeViewController *threeVC = [[CYXThreeViewController alloc]init];    UINavigationController *nav3 = [[UINavigationController alloc]initWithRootViewController:threeVC];    nav3.title = @"博文";    nav3.tabBarItem.image = [UIImage imageNamed:@"qw"];    threeVC.navigationItem.title = @"博文";    threeVC.view.backgroundColor = [UIColor yellowColor];    [self addChildViewController:nav3];    // 4.添加第4個控制器    CYXFourViewController *fourVC = [[CYXFourViewController alloc]init];    UINavigationController *nav4 = [[UINavigationController alloc]initWithRootViewController:fourVC];    nav4.title = @"我的江湖";    nav4.tabBarItem.image = [UIImage imageNamed:@"user"];    fourVC.navigationItem.title = @"我的江湖";    fourVC.view.backgroundColor = [UIColor grayColor];    [self addChildViewController:nav4];}
  • 進行到這里,我們已經把框架搭起來了,是不是很簡單?效果如圖:

Snip20150904_8.png
  • 但你可能會忍不住吐槽了,這些全是冗余的垃圾代碼,沒有可讀性,下面就來抽取一下代碼吧

  • 第四步,抽取重復代碼

    • 由于上文的所有代碼都寫在viewDidLoad里面且重復代碼過多,造成代碼冗余,可擴展性不高的問題,下面讓我們來對代碼進行初步優化。
    • 這里提取兩個方法,一個是添加所有子控制器的方法,另一個是添加每一個子控制器的方法
- (void)viewDidLoad {    [super viewDidLoad];    [self setUpAllChildViewController];}/** *  添加所有子控制器方法 */- (void)setUpAllChildViewController{    // 1.添加第一個控制器    CYXOneViewController *oneVC = [[CYXOneViewController alloc]init];    [self setUpOneChildViewController:oneVC image:[UIImage imageNamed:@"tab_home_icon"] title:@"首頁"];    // 2.添加第2個控制器    CYXTwoViewController *twoVC = [[CYXTwoViewController alloc]init];    [self setUpOneChildViewController:twoVC image:[UIImage imageNamed:@"js"] title:@"技術"];    // 3.添加第3個控制器    CYXThreeViewController *threeVC = [[CYXThreeViewController alloc]init];    [self setUpOneChildViewController:threeVC image:[UIImage imageNamed:@"qw"] title:@"博文"];    // 4.添加第4個控制器    CYXFourViewController *fourVC = [[CYXFourViewController alloc]init];    [self setUpOneChildViewController:fourVC image:[UIImage imageNamed:@"user"] title:@"我的江湖"];}/** *  添加一個子控制器的方法 */- (void)setUpOneChildViewController:(UIViewController *)viewController image:(UIImage *)image title:(NSString *)title{    UINavigationController *navC = [[UINavigationController alloc]initWithRootViewController:viewController];    navC.title = title;    navC.tabBarItem.image = image;    [navC.navigationBar setBackgroundImage:[UIImage imageNamed:@"commentary_num_bg"] forBarMetrics:UIBarMetricsDefault];    viewController.navigationItem.title = title;    [self addChildViewController:navC];}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 高青县| 虞城县| 汉源县| 潮安县| 谢通门县| 兰坪| 青阳县| 岗巴县| 屏南县| 乐陵市| 宝坻区| 永顺县| 泾阳县| 孝感市| 山西省| 克什克腾旗| 平武县| 临沭县| 仙桃市| 常德市| 辽宁省| 宁南县| 浦城县| 新丰县| 保定市| 内黄县| 淮南市| 交口县| 石景山区| 霍林郭勒市| 独山县| 乌兰察布市| 会昌县| 东阿县| 香港 | 寻乌县| 剑阁县| 葫芦岛市| 进贤县| 肃北| 沧州市|