1. 前置
iOS 整体了解
阅读 产品需求文档,原型图,接口文档.
适配了解
转: iOS适配
转: iOS图片适配
转: iOS网络IPV6适配
不同机型适配可看成两部分,一是屏幕大小适配(坐标),一是像素适配;前者根据不同的机型大小,视图大小自动适应(AutoLayout);后者根据机型的分辨率和坐标比率.提供合适图片.
iPhone 现在采用Retina屏, 它的 1point = px*ppi
. 设置图片素材时根据图片分辨率在UI中的尺寸要乘以对应ppi.
例如. 在iPhone6中ppi为1:2,所以如图片px为168×192,那么在程序中size设置为84×96.(ppi:代表屏幕物理大小到图片大小的比例值).
当然,现在UI会给你.png和@2x.png,~@3x.png样式的图片,系统根据机器的分辨率自动决定使用哪张图片.
字体和RGB颜色选择
2. 项目部署.
转 : iOS Bundle identifier介绍
转 : 启动图片设置
Xcode6 新增 Lanchscreen 使用可拉伸图片自动适配不同尺寸设备,但是平时开发中,UI还是会根据不同设备提供多个启动图,所以我们还是使用LanchImage方式设置启动图片.
3. 项目架构
主要介绍项目分组,分工方式.
一般,项目按分为三层, 最上层的UI层(业务层),中间数据层,底层网络请求层.
现在比较流行的MVC与MVVM结构.
一般APP.如微博,今日头条等的架构:
项目架构搭建: 主流结构 (UITabBarController + 导航控制器)
项目开发方式: 1.storyboard 2.纯代码.
根据项目架构,进行文件夹划分
4. 主流框架样式
WechatIMG2.jpeg 主流框架可以看出最上方导航条和最下方的标签栏,得知此界面由UITaBarController和UINavgationController组成.下面贴出简单的代码演示.
主界面开始:
AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 1.创建窗口
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
// 2.设置窗口的根控制器
BSTabBarController *tabBarVc = [[BSTabBarController alloc] init];
self.window.rootViewController = tabBarVc;
// 3.显示窗口
[self.window makeKeyAndVisible];
return YES;
}
UITaBarController中我们来添加UINavgationController子控制器.
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
// 2.2 添加子控制器
[self setUpAllChildViewController];
// 2.3 设置tabButton内容
[self setUpAllTabBarButton];
}
// 设置所有tabButton内容
- (void)setUpAllTabBarButton
{
// 微信
UINavigationController *nav = self.childViewControllers[0];
nav.tabBarItem.title = @"微信";
nav.tabBarItem.image = [UIImage imageNamed:@"tabBar_essence_icon"];
nav.tabBarItem.selectedImage = [UIImage imageWithOriginalName:@"tabBar_essence_click_icon"];
// 通讯录
UINavigationController *nav1 = self.childViewControllers[1];
nav1.tabBarItem.title = @"通讯录";
nav1.tabBarItem.image = [UIImage imageNamed:@"tabBar_new_icon"];
nav1.tabBarItem.selectedImage = [UIImage imageWithOriginalName:@"tabBar_new_click_icon"];
// 发现
UINavigationController *nav2 = self.childViewControllers[2];
nav2.tabBarItem.title = @"发现";
nav2.tabBarItem.image = [UIImage imageNamed:@"tabBar_friendTrends_icon"];
nav2.tabBarItem.selectedImage = [UIImage imageWithOriginalName:@"tabBar_friendTrends_click_icon"];
// 我
UINavigationController *nav3 = self.childViewControllers[3];
nav3.tabBarItem.title = @"我";
nav3.tabBarItem.image = [UIImage imageNamed:@"tabBar_me_icon"];
nav3.tabBarItem.selectedImage = [UIImage imageWithOriginalName:@"tabBar_new_click_icon"];
}
// 添加所有子控制器
- (void)setUpAllChildViewController
{
// 微信
BSEssenceViewController *essenceVc = [[BSEssenceViewController alloc] init];
[self addChildViewController:essenceVc];
// 通讯录
BSNewViewController *newVc = [[BSNewViewController alloc] init];
[self addChildViewController:newVc];
// 发现
BSFriendTrendsViewController *friendVc = [[BSFriendTrendsViewController alloc] init];
[self addChildViewController:friendVc];
// 我
BSMineViewController *meVc = [[BSMineViewController alloc] init];
[self addChildViewController:meVc];
}
- (void)addChildViewController:(UIViewController *)childController
{
BSNavigationController *nav = [[BSNavigationController alloc] initWithRootViewController:childController];
[super addChildViewController:nav];
}
之后,每个页面具体的内容由你自己自定义控制器来设置. 由此,一款APP 的主要架构就搭建起来了. 下一章介绍界面具体内容的设置.
网友评论