iOS 屏幕适配之sizeclass

摘要:
只需使用代码2>自动调整大小可以使红色子控件的宽度始终分布在屏幕上3>可以在任意2个控件4>自动布局不允许不同尺寸的iPhone使用不同的布局方案。2.尺寸等级1>屏幕大小的概念仅为3>屏幕大小有九种排列和组合:在不同的屏幕大小类型下,可以向控件3>

1. 屏幕适配的各种技术

  1> 3gs44s时代:没有屏幕适配一说,尺寸只有一个,直接用代码计算frame就行了

  2> iPad出现:为应对横竖屏,苹果推出autoresizing,它的作用是让子控件能跟随父控件做拉伸.如下图,autoresizing可以让红色的子控件的宽度始终铺满屏幕

iOS 屏幕适配之sizeclass第1张

  3> 55c5s的出现:autoresizng不够用了,因为它只能解决父子关系控件的排布问题,解决不了兄弟关系控件之间的位置关系,所以autolayout出现了.

  autolayout,可以在任意2个控件之间建立位置关系

  4> 66plus的出现:autolayout又不够用了,sizeclass可以实现autolayout做不到需求

    autolayout不够用的原因:

      a>Universal的项目,有2套storyboard,一套是给iphone用,另一套给ipad用的,这就意味着需要对每一套storyboard,设置约束

      b>非Universal项目,比如iphone项目,autolayout无法实现 不同尺寸的iphone使用不同的布局方案

2.sizeclass

  1>sizeclass 仅仅是对屏幕进行了分类,真正排布UI元素的还是autolayout

  2>不再有横竖屏的概念,只有屏幕尺寸的概念

  3>不再有具体尺寸的概念,只有抽象尺寸的概念

2.1 抽象尺寸:把长和宽各分为3种:分别是Compact(紧凑的),Any,Regular(宽松)

  1>这样一划分,屏幕尺寸就9种排列组合:

iOS 屏幕适配之sizeclass第2张 iOS 屏幕适配之sizeclass第3张

iOS 屏幕适配之sizeclass第4张 iOS 屏幕适配之sizeclass第5张

  

  2>在不同屏幕尺寸类型下,可以为控件添加不同的约束条件

iOS 屏幕适配之sizeclass第6张

  3>可以让同一个imageView,在不同的屏幕尺寸洗,显示不同的图片

iOS 屏幕适配之sizeclass第7张

  4>还可以让label在不同的屏幕尺寸下,显示不同的font

iOS 屏幕适配之sizeclass第8张

  5>符号解释:

    - compact

    * any

    + regular

  6>注意尺寸的继承性: any Width | any Height 是Base Values For all layouts,也就是说在any Width | any Height尺寸类型下,给控件添加的约束会影响到其他尺寸类型.例如下面这两约束会报警告.

    在any Width | any Height 给button添加了和左边界固定距离的约束,

    在compact Width | compact Height 给button添加了和右边界固定距离的约束,

iOS 屏幕适配之sizeclass第9张 

免责声明:文章转载自《iOS 屏幕适配之sizeclass》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇c++之标准库iomanipC#学习笔记(3)——操作sqlserver数据库增删改查下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Android-json解析:原生JSONObject+JSONArray的使用【转】

原文地址:https://blog.csdn.net/sinat_31057219/article/details/71518123 一、JSONObject和JSONArray的数据表示形式 JSONObject的数据是用 { } 来表示的, 例如: { "id" : "123", "courseID" : "huangt-test", "title"...

集成WPF与Windows窗体

下载source - 1.92 MB 介绍 本文讨论如何将WPF XPS文档查看器集成到Windows窗体应用程序中。 “WPF给我们带来了一个美好的未来,我们都应该开始使用它,把我们所有的产品都换成它。” 这是个好主意,但对我们大多数人来说,这是不可能的。例如,我们的主要产品有成千上万行代码和数百个表单。把所有这些都扔进垃圾桶,然后重新开始,这将是经济上...

字典(dict),增删改查,嵌套

一丶字典  dict 用{}来表示  键值对数据  {key:value}  唯一性   键  都必须是可哈希的  不可变的数据类型就可以当做字典中的键   值  没有任何限制 二丶字典的增删改查  1.增     dic[key] = value     dic.setdefault(key,value)     如果键在字典中存在,则不进行任何操作,否...

Javascript模块化开发1——package.json详解

一、环境安装 Node.js 安装包及源码下载地址为:https://nodejs.org/en/download/。 在该页面你可以根据不同平台系统选择你需要的 Node.js 安装包。 Node.js里面集成了npm,npm是一种包管理工具,允许用户从NPM服务器下载别人编写的包或命令行程序并分享自己编写的包或命令行程序。 二、创建模块 输入命令npm...

用python从符合一定格式的txt文档中逐行读取数据并按一定规则写入excel(openpyxl支持Excel 2007 .xlsx格式)

前几天接到一个任务,从gerrit上通过ssh命令获取一些commit相关的数据到文本文档中,随后将这些数据存入Excel中。数据格式如下图所示 观察上图可知,存在文本文档中的数据符合一定的格式,通过python读取、正则表达式处理并写入Excel文档将大大减少人工处理的工作量。   1. 从gerrit获取原始信息,存入文本文档:    $ssh –p...

提高iOS开发效率的第三方框架等--不断更新中。。。

1. Mantle Mantle 让我们能简化 Cocoa 和 Cocoa Touch 应用的 model 层。简单点说,程序中经常要进行网络请求,请求到得一般是 json 字符串,我们一般会建一个 Model 类来存放这些数据。这就要求我们编写一系列的序列化代码,来把 json 转换为 Model 。这很费时间,容易错,不容易修改。 Mantle 很好...