博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iPhone UI开发的一些注意事项
阅读量:4109 次
发布时间:2019-05-25

本文共 1965 字,大约阅读时间需要 6 分钟。

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

启动图

APP ICON

页面布局

AutoLayout - 控件的位置布局

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

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

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:这个方法之前就进行了。

你可能感兴趣的文章
Git Shell Warning
查看>>
课程总结
查看>>
新产品为了效果,做的比較炫,用了非常多的图片和JS,所曾经端的性能是非常大的问题,分篇记录前端性能优化的一些小经验。...
查看>>
访问修饰符和构造函数
查看>>
单例模式浅析
查看>>
小程序之map地图上不能在覆盖层
查看>>
L2-001 紧急救援
查看>>
修改敏感字
查看>>
Git reset到某一次commit
查看>>
荣品i.mx6q飞思卡尔工业级核心板开发板高稳定性
查看>>
web api 跨域请求
查看>>
基于注解的AOP配置
查看>>
SVN实现自动更新(Windows平台)
查看>>
SQL如何取日期中的年月
查看>>
C# goto
查看>>
Confluence 6 给一个从 Jira Service Desk 的非许可证用户访问权限
查看>>
node.js基础 1之简单的nodejs模块
查看>>
Cocos2d-x学习笔记(一) 搭建开发环境
查看>>
关于 古人劝学 --写的真心是好 真的有收获
查看>>
【习题 7-7 UVA-12558】Egyptian Fractions (HARD version)
查看>>