本文共 1965 字,大约阅读时间需要 6 分钟。
下面简单谈一些iPhone UI开发的一些事情(iOS8以后)。
里面的控件的位置是基于 “点” 的概念,而不是像素。
采用控件的相对布局,而不是绝对的布局
Size Classes - 适配不同的屏幕分辨率
在 iOS8 中,我们不用再像以前那样,一个页面新建多个 xib 文件来适配不同类型的屏幕,现在我们可以把各种尺寸屏幕的适配工作放在一个文件中完成,然后可以通过不同类别的 Size 来定制各种尺寸的界面。换句话说,你眼前的 Storyboard 不是一个普通的 Storyboard ,而是一个九合一的 Storyboard ,可以管理九种类型的屏幕。
对于宽度和高度而言,都有三种情况:紧凑 (Compact) 、任意 (Any) 、 正常 (Regular) ,所以一共有9个类别,在设置 Size Class 的时候页面会有提示。
参考:
1.
2.
假设有三张图片名为:正确的命名方式应该是这样 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.
所谓控制器的生命周期,通俗来讲,就是控制器的创建、视图的加载与显示,以及控制器的销毁等操作。 (1)控制器生命周期的常用方法 在UIViewController类中,定义了完整的控制器生命周期的方法,在不同的时间点会调用不同的方法,常用的方法有:
(2)使用代码创建控制器时调用的方法列表
当使用代码创建控制器时,一般会使用init方法进行实例化。通过日志,可以发现此时调用如下方法:
(3) 使用xib创建控制器时调用的方法列表
当使用xib创建控制器时,一般会使用initWithNibName:方法进行实例化。通过日志,可以发现此时调用如下方法:
(4) 使用故事版StroyBoard创建控制器时调用的方法列表
当使用StroyBoard创建控制器时,程序在启动一开始,就会对StoryBoard文件进行读取,并且自动创建根控制器(即,带箭头的控制器),在创建过程中,会自动调用initWithCoder方法以及awakeFromNib方法。
通过日志,我们还可以发现,实例化根控制器是在didFinishLaunchingWithOptions:这个方法之前就进行了。