rakuyoMo / ScreenAdaptationManager

一个屏幕适配的小demo,采用使用纯代码、Autoresizing、Autolayout三种方式编写

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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的问题。

相关笔记

任务4(sb创建视图,使用autolayout布局)思路:

因为在storyboard下完全使用autolayout进行屏幕适配,会给阅读项目造成很大的障碍,所以在此写一下添加约束时的思路,方便阅读。 约束在横屏、竖屏下相似,故以竖屏举例。

mainView

共5个约束。

  1. 设置mainViewself.view水平对齐
  2. 设置mainViewself.view垂直对齐
  3. 设置mainView长宽比1:1
  4. 竖屏状态下,分别设置mainView左、右间距为0。
  5. 竖屏状态下,分别设置mainView上、下间距为0。

leftView与rightView

每个视图共6个约束。

  1. leftViewrightView设置vertical Centers水平对齐
  2. leftViewrightView分别设置与其父视图mainView宽相等,并设置宽度系数0.5
  3. leftViewrightView分别设置与其父视图mainView高相等
  4. leftViewrightView设置左/右间距为0。
  5. leftViewrightView设置分别设置上间距为0。
  6. leftViewrightView设置分别设置下间距为0。

firstView、secondView、thirdView与fourthView

以firstView为例,每个视图共6个约束。

  1. firstViewsecondView设置Horizontal Centers垂直对齐。
  2. 设置firstViewleftView右间距为5。
  3. 设置firstViewleftView左间距为10。
  4. 分别设置firstViewleftView上间距为10。
  5. 分别设置firstViewleftView下间距为10。
  6. 设置firstView长宽比1:1

问题:

  • plus尺寸下,横屏时约束失效,具体表现为:右侧属性面板Installed已被选中,但是左侧约束图标不亮,且报错。如图:
  • 解决办法是在横屏的plus尺寸下重新添加了一遍约束,但感觉这是迫不得已的办法,不是真正的解决办法....

About

一个屏幕适配的小demo,采用使用纯代码、Autoresizing、Autolayout三种方式编写

License:MIT License


Languages

Language:Objective-C 100.0%