iPhone UI开发的一些注意事项

下面简单谈一些iPhone UI开发的一些事情(iOS8以后)。

启动图

APP ICON

页面布局

AutoLayout - 控件的位置布局

里面的控件的位置是基于 “” 的概念,而不是像素。

采用控件的相对布局,而不是绝对的布局


Size Classes - 适配不同的屏幕分辨率

在 iOS8 中,我们不用再像以前那样,一个页面新建多个 xib 文件来适配不同类型的屏幕,现在我们可以把各种尺寸屏幕的适配工作放在一个文件中完成,然后可以通过不同类别的 Size 来定制各种尺寸的界面。换句话说,你眼前的 Storyboard 不是一个普通的 Storyboard ,而是一个九合一的 Storyboard ,可以管理九种类型的屏幕。

对于宽度和高度而言,都有三种情况:紧凑 (Compact) 、任意 (Any) 、 正常 (Regular) ,所以一共有9个类别,在设置 Size Class 的时候页面会有提示。


参考:  

1. 初探iOS8中的 Size Class

2. iOS - SizeClasses的基本使用

页面切图

假设有三张图片名为:正确的命名方式应该是这样 test_t@1x.png、test_t@2x.png 、test_t@3x.png

这是对于ios 切图来说的

iphone 4之前的非retina屏就是采用test_t@1x.png

iphone 4  5  6是采用test_t@2x.png这个图

iphone 6 plus就采用test_t@3x.png

但是对于iphone加载的顺序是

在ipone4     ipone5 s、iphone6和iphone6 plus都是不需要带上@2x/@3x的图片后缀名,程序会优先加载 @2x 的图片,但如果需要加载 @3x 的图片,你需要写上 @3x ;这个是IOS客户端做的,但是作为APP设计师必须了解。

 

这么做的目的是什么呢?

第一:为解决ios分辨率而生


之所以有@1x @2x和@3x的出现,也是苹果为了便于程序员的开发,不同分辨率的设备开发时统一为一个尺寸。例如iPad2 是768 x 1024,iPad Retina 是1536 x 2048,开发时都按 768 * 1024 操作。但实际上两者有一倍差异。为了达到最佳效果,使用的图片大小不一样。这时候就用同一个名称,但 Retina 的图加上 @2x 后缀。系统加载图片时,在 iPad2 上会加载 @1x 的图在 1536 * 2048 的设备上,会加载 @2x 的。@3x 现在用于 iPhone 6/6+ 上。

 

第二:@1x @2x和@3x也是xcode软件所需要的UI资源。你命好名称以后,ios会根据设备型号自动挑选合适的@1x,@2x或@3x尺寸来使用。

 

第三个:mac电脑上的APP设计软件Sketch,他切图之后保存的图片格式也是带有@1x @2x和@3x。  在这里可以解毒@1x @2x和@3x为图片格式,成为图片后缀名。跟我们安卓上的.9.png 类似的。

 

第四个:苹果IOS程序开发不同分辨率的设备统一为一个尺寸而标记的。@3X就是@1X分辨率的3倍。@3x也是倍数的解读。

 

所以,在这里安卓到底有没有这样的@1x @2x和@3x的格式呢。25学堂的小编认为,肯定没有,@1x @2x和@3x严格来说是苹果公司的专利。适合安卓的切图命名规范最好的是.9.png图,当然目前.9.png应用在ios上也很多。

附带一提:iOS8渲染操作中使用前缀带有@1x、@2x 和@3x 的测试图像,代码会优先载入3x 图像。@2x图像不被加载。


参考:

1.  移动APP切图术语解读:什么是@1x @2x和@3x

控制器生命周期

所谓控制器的生命周期,通俗来讲,就是控制器的创建、视图的加载与显示,以及控制器的销毁等操作。
(1)控制器生命周期的常用方法
在UIViewController类中,定义了完整的控制器生命周期的方法,在不同的时间点会调用不同的方法,常用的方法有:


(2)使用代码创建控制器时调用的方法列表

当使用代码创建控制器时,一般会使用init方法进行实例化。通过日志,可以发现此时调用如下方法:


(3) 使用xib创建控制器时调用的方法列表

当使用xib创建控制器时,一般会使用initWithNibName:方法进行实例化。通过日志,可以发现此时调用如下方法:


(4) 使用故事版StroyBoard创建控制器时调用的方法列表

当使用StroyBoard创建控制器时,程序在启动一开始,就会对StoryBoard文件进行读取,并且自动创建根控制器(即,带箭头的控制器),在创建过程中,会自动调用initWithCoder方法以及awakeFromNib方法。

通过日志,我们还可以发现,实例化根控制器是在didFinishLaunchingWithOptions:这个方法之前就进行了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值