亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

[iOS微博項目-1.0]-搭建基本框架

2019-11-14 19:35:39
字體:
來源:轉載
供稿:網友
A.搭建基本環境
 
 
項目結構:
Image(56)
 
1.使用代碼構建UI,不使用storyboard
Image(57)
 
 
AppDelegate:
 1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 2     // Override point for customization after application launch. 3     4     // 啟動后顯示狀態欄 5     UIApplication *app = [UIApplication sharedApplication]; 6     app.statusBarHidden = NO; 7     8     // 設置window 9     self.window = [[UIWindow alloc] init];10     self.window.frame = [UIScreen mainScreen].bounds;11    12     [self.window makeKeyAndVisible];13    14     return YES;15 }
 
2.使用LaunchImage作為啟動圖,不使用xib
Image(58)
 
 
3.配置圖標AppIcon
Image(59)
 
不使用系統渲染圖標
Image(60)
 
4.設置屏幕方向-->只有豎向
5.啟動時隱藏狀態欄
Image(61)
 
 
B.項目分層 & 創建PCH
1.項目分層
為了讓在Finder中顯示跟Xcode中顯示都是分層效果,首先在Finder中建文件目錄層次
Image(62)
 
再把文件目錄拖入Xcode
Image(63)
 
2.創建并配置一個pch文件,來用聲明全局公共宏命令
Image(64)
 
配置:
Image(65)
 
 
C.添加子控制器
1.為每個Tab創建一個集成UITableViewController的類
分別是:首頁、信息、發現、我
2.創建一個集成UITabBarController的類作為window的rootViewController
AppDelegate:
 1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 2     // Override point for customization after application launch. 3     4     // 啟動后顯示狀態欄 5     UIApplication *app = [UIApplication sharedApplication]; 6     app.statusBarHidden = NO; 7     8     // 設置window 9     self.window = [[UIWindow alloc] init];10     self.window.frame = [UIScreen mainScreen].bounds;11    12     // 創建根控制器13     HVWTabBarViewController *tabVC = [[HVWTabBarViewController alloc] init];14     self.window.rootViewController = tabVC;15    16     [self.window makeKeyAndVisible];17    18     return YES;19 }
 
3.在上述的TabBarController中創建并添加子控件
HVWTabBarViewController.m :
 1 - (void)viewDidLoad { 2     [super viewDidLoad]; 3     // Do any additional setup after loading the view. 4     5     // 添加子控制器 6     // 首頁 7     HVWHomeViewController *homeVC = [[HVWHomeViewController alloc] init]; 8     homeVC.view.backgroundColor = [UIColor redColor]; 9     homeVC.title = @"首頁";10     [self addChildViewController:homeVC];11    12     // 消息13     HVWMessageViewController *messageVC = [[HVWMessageViewController alloc] init];14     messageVC.view.backgroundColor = [UIColor blueColor];15     messageVC.title = @"消息";16     [self addChildViewController:messageVC];17    18     // 發現19     HVWDiscoverViewController *discoverVC = [[HVWDiscoverViewController alloc] init];20     discoverVC.view.backgroundColor = [UIColor yellowColor];21     discoverVC.title = @"發現";22     [self addChildViewController:discoverVC];23    24     //25     HVWPRofileViewController *profileVC = [[HVWProfileViewController alloc] init];26     profileVC.view.backgroundColor = [UIColor greenColor];27     profileVC.title = @"";28     [self addChildViewController:profileVC];29 }
 
Image(66)
 
4.為tab添加圖片
1.需求:要區分iOS7之前及之后的系統,使用不同的圖片
這里創建一個UIImage的分類,新寫一個加載圖片的的方法,用來自動檢測系統版本并加載不同的圖片
 
(1)iOS6使用普通圖片, iOS7及以上系統版本使用的是帶有"_os7"結尾的圖片
Image(67)
 
(2)添加一條用來判別系統版本的宏
HVWWeibo-Prefix.pch:
 1 #ifndef HVWWeibo_HVWWeibo_Prefix_pch 2 #define HVWWeibo_HVWWeibo_Prefix_pch 3  4 // Include any system framework and library headers here that should be included in all compilation units. 5 // You will also need to set the Prefix Header build setting of one or more of your targets to reference this file. 6  7 // 判別是否iOS7或以上版本系統 8 #define iOS7 ([UIDevice currentDevice].systemVersion.doubleValue >= 7.0) 9 10 #endif
 
(3)創建UIImage+Extension分類
UIImage+Extension.m:
 1 #import "UIImage+Extension.h" 2  3 @implementation UIImage (Extension) 4  5 + (UIImage *) imageWithNamed:(NSString *) imageName { 6     UIImage *image = nil; 7     8     // 如果是iOS7或以上版本 9     if (iOS7) {10         image = [UIImage imageNamed:[NSString stringWithFormat:@"%@_os7", imageName]];11     }12    13     // 如果是iOS614     if (nil == image) {15         image = [UIImage imageNamed:imageName];16     }17    18     return image;19 }20 21 @end
 
(4)添加tab圖標
封裝一下創建子控制器的代碼
HVWTabBarViewController.m:
 1 #import "HVWTabBarViewController.h" 2 #import "HVWHomeViewController.h" 3 #import "HVWMessageViewController.h" 4 #import "HVWDiscoverViewController.h" 5 #import "HVWProfileViewController.h" 6 #import "UIImage+Extension.h" 7  8 @interface HVWTabBarViewController () 9 10 @end11 12 @implementation HVWTabBarViewController13 14 - (void)viewDidLoad {15     [super viewDidLoad];16     // Do any additional setup after loading the view.17    18     // 添加子控制器19     // 首頁20     HVWHomeViewController *homeVC = [[HVWHomeViewController alloc] init];21     [self addChildViewController:homeVC WithTitle:@"首頁" image:@"tabbar_home" seletectedImage:@"tabbar_home_selected"];22    23     // 消息24     HVWMessageViewController *messageVC = [[HVWMessageViewController alloc] init];25     [self addChildViewController:messageVC WithTitle:@"消息" image:@"tabbar_message_center" seletectedImage:@"tabbar_message_center_selected"];26    27     // 發現28     HVWDiscoverViewController *discoverVC = [[HVWDiscoverViewController alloc] init];29     [self addChildViewController:discoverVC WithTitle:@"發現" image:@"tabbar_discover" seletectedImage:@"tabbar_discover_selected"];30    31     //32     HVWProfileViewController *profileVC = [[HVWProfileViewController alloc] init];33     [self addChildViewController:profileVC WithTitle:@"" image:@"tabbar_profile" seletectedImage:@"tabbar_profile_selected"];34    35 }36 37 /** 添加tab子控制器 */38 - (void) addChildViewController:(UIViewController *) viewController WithTitle:(NSString *) title image:(NSString *) imageName seletectedImage:(NSString *) selectedImageName {39    40     // 設置隨機背景色41     viewController.view.backgroundColor = [UIColor colorWithRed:arc4random_uniform(256)/255.0 green:arc4random_uniform(256)/255.0  blue:arc4random_uniform(256)/255.0  alpha:1.0];42    43     // 設置標題44     viewController.title = title;45     // 設置圖標46     viewController.tabBarItem.image = [UIImage imageWithNamed:imageName];47    48     // 被選中時圖標49     UIImage *selectedImage = [UIImage imageWithNamed:selectedImageName];50     // 如果是iOS7,不要渲染被選中的tab圖標(iOS7中會自動渲染成為藍色)51     if (iOS7) {52         selectedImage = [selectedImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];53     }54     viewController.tabBarItem.selectedImage = selectedImage;55    56     // 添加子控制器57     [self addChildViewController:viewController];58 }59  60 @end
 
 
Image(68)
 
 
D.添加導航控制器
1.只是在每個tab的controller上包裝了一個UINavigationController
HVWTabBarViewController.m:
 1 /** 添加tab子控制器 */ 2 - (void) addChildViewController:(UIViewController *) viewController WithTitle:(NSString *) title image:(NSString *) imageName seletectedImage:(NSString *) selectedImageName { 3     4     // 設置隨機背景色 5     viewController.view.backgroundColor = [UIColor colorWithRed:arc4random_uniform(256)/255.0 green:arc4random_uniform(256)/255.0  blue:arc4random_uniform(256)/255.0  alpha:1.0]; 6     7     // 設置標題,直接設置title可以同時設置tabBarItem和navigationItem的title 8 //    viewController.tabBarItem.title = title; 9 //    viewController.navigationItem.title = title;10     viewController.title = title;11    12     // 設置圖標13     viewController.tabBarItem.image = [UIImage imageWithNamed:imageName];14    15     // 被選中時圖標16     UIImage *selectedImage = [UIImage imageWithNamed:selectedImageName];17     // 如果是iOS7,不要渲染被選中的tab圖標(iOS7中會自動渲染成為藍色)18     if (iOS7) {19         selectedImage = [selectedImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];20     }21     viewController.tabBarItem.selectedImage = selectedImage;22    23     // 添加子控制器24     UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:viewController];25     [self addChildViewController:nav];26 }
 
Image(69)
 
 
2.進入非NavigationController的rootViewController的時候,隱藏底部的TabBar
自定義一個集成UINavigationController的類,代替原來的原生類
重寫pushViewController方法,當push的時候隱藏TabBar
#mark:此方法可以作用與所有的非rootViewController,非常好用
 
hideTabBarWhenPush
 
HVWNavigationViewController.m:
 1 #import "HVWNavigationViewController.h" 2  3 @interface HVWNavigationViewController () 4  5 @end 6  7 @implementation HVWNavigationViewController 8  9 - (void)viewDidLoad {10     [super viewDidLoad];11     // Do any additional setup after loading the view.12 }13 14 - (void)didReceiveMemoryWarning {15     [super didReceiveMemoryWarning];16     // Dispose of any resources that can be recreated.17 }18 19 /** 重寫push方法 */20 - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated {21     // 如果不是根控制器,隱藏TabBar22     if (self.viewControllers.count > 0) {23         // 注意這里不是self(navigationController),是push出來的ViewContoller隱藏TabBar24         viewController.hidesBottomBarWhenPushed = YES;25     }26    27     // 最后一定要調用父類的方法28     [super pushViewController:viewController animated:animated];29 }30 31 @end
 
E.添加導航欄按鈕
需要給各個Tab還有其下的頁面添加導航欄按鈕
 
 
1.在pch文件添加一個隨機顏色宏定義和一個debug模式下的log函數
 1 //  HVWWeibo-Prefix.pch 2 #ifndef HVWWeibo_HVWWeibo_Prefix_pch 3 #define HVWWeibo_HVWWeibo_Prefix_pch 4  5 // Include any system framework and library headers here that should be included in all compilation units. 6 // You will also need to set the Prefix Header build setting of one or more of your targets to reference this file. 7  8 #ifdef __OBJC__ 9     #import <UIKit/UIKit.h>10     #import <Foundation/Foundation.h>11     #import "UIImage+Extension.h"12 #endif13 14 // 測試用log15 #ifdef DEBUG16     #define HVWLog(...) NSLog(__VA_ARGS__)17 #else18     #define HVWLog(...)19 #endif20 21 // 判別是否iOS7或以上版本系統22 #define iOS7 ([UIDevice currentDevice].systemVersion.doubleValue >= 7.0)23 24 // 隨機顏色25 #define RandomColor [UIColor colorWithRed:arc4random_uniform(256)/255.0 green:arc4random_uniform(256)/255.0  blue:arc4random_uniform(256)/255.0  alpha:1.0]26 27 28 #endif
 
使用宏定義的log函數,只有在debug模式下才會轉化成為NSLog,release的時候會轉為空
1 /** 尋找朋友按鈕事件 */2 - (void) searchFriend {3     HVWLog(@"searchFriend");4 }
 
這里可以修改運行模式:
Image(70)
 
Image(71)
 
2.創建一個集成UIBarButtonItem的分類,用來創建使用UIButton作為按鈕圖標的item
 1 // 2 //  UIBarButtonItem+Extension.m 3 //  HVWWeibo 4 // 5 //  Created by hellovoidworld on 15/1/31. 6 //  Copyright (c) 2015年 hellovoidworld. All rights reserved. 7 // 8  9 #import "UIBarButtonItem+Extension.h"10 11 @implementation UIBarButtonItem (Extension)12 13 + (instancetype) itemWithImage:(NSString *) imageName hightlightedImage:(NSString *) highlightedImageName target:(id)target selector:(SEL)selector {14      UIBarButtonItem *item = [[self alloc] init];15    16     // 創建按鈕17     UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];18     UIImage *image = [UIImage imageNamed:imageName];19     [button setImage:image forState:UIControlStateNormal];20     [button setImage:[UIImage imageNamed:highlightedImageName] forState:UIControlStateHighlighted];21    22     // 一定要設置frame,才能顯示23     button.frame = CGRectMake(0, 0, image.size.width, image.size.height);24    25     // 設置事件26     [button addTarget:target action:selector forControlEvents:UIControlEventTouchUpInside];27    28     item.customView = button;29     return item;30 }31 32 @end
 
3.sample:在“首頁”頁面加上導航欄按鈕
Image(72)
 
 1 //  HVWHomeViewController.m 2 - (void)viewDidLoad { 3     [super viewDidLoad]; 4     5     // 添加導航控制器按鈕 6     // 左邊按鈕 7     self.navigationItem.leftBarButtonItem = [HVWBarButtonItem itemWithImage:@"navigationbar_friendsearch" hightlightedImage:@"navigationbar_friendsearch_highlighted" target:self selector:@selector(searchFriend)]; 8     9     // 右邊按鈕10     self.navigationItem.rightBarButtonItem = [HVWBarButtonItem itemWithImage:@"navigationbar_pop" hightlightedImage:@"navigationbar_pop_highlighted" target:self selector:@selector(pop)];11 }12  13 /** 左邊導航欄按鈕事件 */14 - (void) searchFriend {15     HVWLog(@"searchFriend");16 }17 18 /** 右邊導航欄按鈕事件 */19 - (void) pop {20     HVWLog(@"pop");21 }
 
4.給所有非rootViewController加上“返回”按鈕和“直接回到rootViewController”按鈕
在HVWNavigationViewController的push方法中實現
#mark:由于是在NavigationController中實現,可以一舉實現在所有非rootViewController中的效果。
 
NotRootNaviButton
 1 //  HVWNavigationViewController.m 2 /** 重寫push方法 */ 3 - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated { 4     // 如果不是根控制器,隱藏TabBar 5     if (self.viewControllers.count > 0) { 6         // 注意這里不是self(navigationController),是push出來的ViewContoller隱藏TabBar 7         viewController.hidesBottomBarWhenPushed = YES; 8         9         // 加上“返回上一層”按鈕和“直接回到根控制器”按鈕10         viewController.navigationItem.leftBarButtonItem = [UIBarButtonItem itemWithImage:@"navigationbar_back" hightlightedImage:@"navigationbar_back_highlighted" target:self selector:@selector(back)];11        12         viewController.navigationItem.rightBarButtonItem = [UIBarButtonItem itemWithImage:@"navigationbar_more" hightlightedImage:@"navigationbar_more_highlighted" target:self selector:@selector(more)];13     }14    15     // 最后一定要調用父類的方法16     [super pushViewController:viewController animated:animated];17 }18 19 /** 返回上一層 */20 - (void) back {21     [self popViewControllerAnimated:YES];22 }23 24 /** 返回根控制器 */25 - (void) more {26     [self popToRootViewControllerAnimated:YES];27 }

 

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久成年人视频| 欧美色videos| 亚洲第一偷拍网| 97在线免费观看视频| 亚洲欧美日韩一区二区在线| 国产精品自拍偷拍视频| 91视频-88av| 一区二区中文字幕| 色综合久久88色综合天天看泰| 国产亚洲欧美日韩一区二区| 久久久久久久激情视频| 国产精品福利网站| 久久精品国产欧美亚洲人人爽| 日韩欧美视频一区二区三区| 91久久国产综合久久91精品网站| 欧美黑人巨大精品一区二区| 国产视频综合在线| 狠狠躁夜夜躁人人躁婷婷91| 91天堂在线视频| 欧美日韩美女视频| 日韩一区二区在线视频| 97视频在线观看网址| 国产精品久久久久久久午夜| 国内精品在线一区| 色综合视频一区中文字幕| 国产欧美va欧美va香蕉在线| 51色欧美片视频在线观看| 影音先锋日韩有码| 日韩有码在线观看| 欧美成人在线免费视频| 91av在线国产| 欧美激情在线狂野欧美精品| 欧美成人黑人xx视频免费观看| 国产欧美精品日韩精品| 亚洲精品视频二区| 国产97在线观看| 欧美午夜视频在线观看| 亚洲精品一区二区在线| 国产精品极品美女在线观看免费| 亚洲欧美在线播放| 欧美资源在线观看| 日韩精品极品在线观看| 亚洲欧美日韩一区二区在线| 国产极品精品在线观看| 欧美一级高清免费| 国产在线视频一区| 国产区精品在线观看| 国模精品视频一区二区三区| 亚洲第一av网站| 国产精品色午夜在线观看| 欧美一级大胆视频| 亚洲精品美女网站| 国产精品免费网站| 欧美日韩一区二区在线| 精品福利免费观看| 精品久久在线播放| 亚洲精品免费一区二区三区| 亚洲国产一区二区三区四区| 欧美成人在线免费视频| 欧美疯狂xxxx大交乱88av| 国产一区欧美二区三区| 91亚洲人电影| 亚州国产精品久久久| 在线播放亚洲激情| 97精品国产91久久久久久| 一区二区三区在线播放欧美| 影音先锋欧美在线资源| 国产精品偷伦视频免费观看国产| 国产精品久久久久久久天堂| 国产一区二区黑人欧美xxxx| 77777少妇光屁股久久一区| 国产视频在线观看一区二区| 欧美片一区二区三区| 久久久之久亚州精品露出| 亚洲第一区中文99精品| 福利一区福利二区微拍刺激| 欧美夫妻性视频| 欧美日韩福利电影| 美女视频久久黄| 亚洲欧美国内爽妇网| 精品美女国产在线| 欧美男插女视频| 91精品一区二区| 国产做受高潮69| 日韩综合中文字幕| 高清欧美性猛交xxxx黑人猛交| 一区二区三区四区在线观看视频| 亚洲级视频在线观看免费1级| 97精品国产91久久久久久| 欧美一区二区大胆人体摄影专业网站| 亚洲美女自拍视频| 精品久久久久久久久久国产| 日韩成人激情在线| 国产精品1234| 日韩电影在线观看永久视频免费网站| 国产亚洲激情视频在线| 精品视频在线播放免| 黑人狂躁日本妞一区二区三区| www.亚洲成人| 色yeye香蕉凹凸一区二区av| 久久亚洲欧美日韩精品专区| 国产精品成人在线| 久久99视频精品| 日产日韩在线亚洲欧美| 亚洲美女久久久| 久久久久免费视频| 高清欧美性猛交xxxx| 国产视频丨精品|在线观看| 日韩国产激情在线| 欧美性猛交xxxx| 日韩中文理论片| 国产精品旅馆在线| 亚洲三级av在线| 成年人精品视频| 中文字幕欧美在线| 国产91精品久久久久久久| 中文字幕亚洲无线码在线一区| 欧美日韩不卡合集视频| 亚洲尤物视频网| 国产精品h片在线播放| 欧美综合第一页| 日韩欧美极品在线观看| 日韩在线观看av| 青青在线视频一区二区三区| 久久久久久久色| 亚洲国产精品va在线观看黑人| 日韩中文字幕在线| 高清欧美性猛交xxxx| 精品久久久久久久久久久久久| 精品国产欧美一区二区三区成人| 欧美裸体xxxx极品少妇软件| 午夜精品久久久久久久99黑人| 亚洲精品中文字| 国产精品96久久久久久又黄又硬| 亚洲天堂男人天堂女人天堂| 最近2019中文字幕mv免费看| 3344国产精品免费看| 久久国产精品亚洲| 国产免费一区二区三区在线观看| 岛国av午夜精品| 亚洲国产精品久久久久秋霞不卡| 欧美中文在线观看| 中文字幕国产日韩| 亚洲欧美成人在线| 亚洲精品一区中文字幕乱码| 国产精品一香蕉国产线看观看| 亚洲乱亚洲乱妇无码| 91沈先生作品| 日韩电影中文字幕av| 欧美成人午夜视频| 日韩欧美在线视频| 韩国国内大量揄拍精品视频| 亚洲国产成人爱av在线播放| 亚洲第五色综合网| 欧美色videos| 亚洲电影免费观看高清完整版在线| 欧美日韩国产在线看| 97精品国产97久久久久久| 亚洲福利在线观看| 精品视频在线播放| 亚洲白虎美女被爆操| 国产99久久精品一区二区 夜夜躁日日躁| 亚洲激情电影中文字幕| 国产成人自拍视频在线观看|