ScreenAdaptation
屏幕适配项目目标:
采用以下四种方法进行屏幕适配:
- 1. 纯代码创建5个视图,使用
Frame
布局。 - 2. 纯代码创建5个视图,使用
Autoresizing
布局。 - 3. xib/sb创建视图,使用
Autoresizing
布局。 - 4. xib/sb创建视图,使用
Autolayout
布局。
待修改问题
- 1.调整目录结构。
- 2.删掉BaseView中获取屏幕尺寸的方法,改为调用self.superView的方法。
- 2.5 解决掉2后出来的新问题:初始为横屏时,图形位置有问题。
- 3.封装BaseView中暴露的内部属性。
- 4.为所有添加旋转监听的地方设置取消监听。
- 5.重新理解在storyboard中使用autolayout,修改视图约束。
- 6.解决任务3中,当界面初始为横屏时,BaveView位置错误的问题。
- 7.封装ListTableViewController中的数据源。
- 7.5 将控制器初始化放在点击跳转中。
- 最后还是将模型合并为了1个。分成两个模型还是没有必要。
- 8.修改BaseView下的4个子视图的Frame设置,使其具有可变性,以防未来需求变动。
- 9.检查除任务2外,剩下3个任务,在快速横屏过程中会出现视图大小错误的问题。
- 10.将旋转监听改为viewDidLayoutSubviews和layoutSubviews。
- 11.重新理解在storyboard中使用Autoresizing,修改视图约束。
- 12.将BaseView拆分开来,即在Frame-Code和Autoresizing-Code中不再共用一个BaseView视图。
- 13.在任务2中,将4个子视图全部用Autoresizing方法布局。
- 14.修改两个View中关于NaviBar高度的代码。
- 15.思考整合两个RootTableViewModel的方法。
- 方法:将两个model放到一个数组中。将数组赋值给cell。然后cell再取数组中对应的model元素,最后将Mode元素的Title或者ViewController赋值到对应的位置。
- 移除autolayout_SB中用代码进行约束的部分,全部改为在storyboard中用约束搞定。
- 修改了在每次点击cell的时候都会添加ViewController的问题。
相关笔记
- iOS开发之屏幕旋转
- iOS自动布局之Autoresizing(code && storyboard)
- iOS自动布局之在StoryBoard中使用Autolayout和SizeClass
- Objective-C之Block代码块
任务4(sb创建视图,使用autolayout布局)思路:
因为在storyboard下完全使用autolayout进行屏幕适配,会给阅读项目造成很大的障碍,所以在此写一下添加约束时的思路,方便阅读。 约束在横屏、竖屏下相似,故以竖屏举例。
mainView
共5个约束。
- 设置
mainView
与self.view
水平对齐。 - 设置
mainView
与self.view
垂直对齐。 - 设置
mainView
的长宽比为1:1。 - 在竖屏状态下,分别设置
mainView
的左、右间距为0。 - 在竖屏状态下,分别设置
mainView
的上、下间距为0。
leftView与rightView
每个视图共6个约束。
leftView
与rightView
设置vertical Centers
水平对齐。leftView
与rightView
分别设置与其父视图mainView
宽相等,并设置宽度系数为0.5。leftView
与rightView
分别设置与其父视图mainView
高相等。leftView
与rightView
设置左/右间距为0。leftView
与rightView
设置分别设置上间距为0。leftView
与rightView
设置分别设置下间距为0。
firstView、secondView、thirdView与fourthView
以firstView为例,每个视图共6个约束。
firstView
与secondView
设置Horizontal Centers
垂直对齐。- 设置
firstView
与leftView
右间距为5。 - 设置
firstView
与leftView
左间距为10。 - 分别设置
firstView
与leftView
上间距为10。 - 分别设置
firstView
与leftView
下间距为10。 - 设置
firstView
的长宽比为1:1。