iOS开发技巧 - Size Class与iOS 8多屏幕适配(一)
0. 背景:
在iOS开发中,Auto Layout(自动布局)能解决大部分的屏幕适配问题。 但是当iPhone 6和iPhone 6 Plus发布以后, Auto Layout已经不能解决复杂的屏幕适配问题了,
因此, 在iOS 8以后苹果推出了Size Class, 它是基于Auto Layout技术的。
1. Size Class的开启和使用
与Auto Layout不同, Size Class不能通过代码编程管理,只能通过IB(Interface Builder)使用。
默认情况下Story Board等布局文件已经开启了Size Class,如果没有开启,可以选中Story Board->文件检查器->选中Use Size Classes
->点击布局工具栏的Size Class按钮(wAny|hAny),将弹出Size Class菜单。
2. Size Class的九宫格
Size Class菜单是一个九宫格,可以组合出9种情况,每一种情况应对不同的布局。
|
wCompact | hCompact |
wAny | hCompact |
wRegular | hCompact |
|
wCompact | hAny
|
wAny | hAny |
wRegular | hAny |
|
wCompact | hRegular |
wAny | hRegular |
wRegular | hRegular |
Compact - 紧凑
就是屏幕空间相对较小,如iPhone竖屏时,水平方向是Compact,而垂直方向是Regular,这时候的取值是wCompact | hRegular。
Any - 任意
在Compact和Regular之间的值是Any, Any一般用于iPad布局,这时候的取值是wAny | hAny。
Regular - 正常
正常情况, 当iPhone横屏时,水平方向是Regular,而垂直方向是Compact, 这时候的取值为wRegular | hCompact。
* wCompact | hCompact: 适用于3.5英寸,4英寸,4.7英寸的iPhone的横屏情况。
* wAny | hCompact: 适用于垂直方向是Compact的情况,例如iPhone横屏。
* wRegular | hCompact: 适用于5.5英寸的iPhone的横屏情况。
* wCompact | hAny: 适用于所有的水平方向是Compact的情况,如3.5英寸,4英寸,4.7英寸的iPhone的竖屏情况。
* wAny | hAny: 适用于所有的布局情况,这是最后的选择。
* wRegular | hAny: 适用于所有的水平方向是Regular的情况,如iPad横屏和竖屏的情况。
* wCompact | hRegular: 适用于所有的iPhone竖屏情况。
* wAny | hRegular: 适用于所有的垂直方向是Regular的情况,如iPhone竖屏,iPad横屏和竖屏的情况。
wRegular | hRegular: 适用于所有的iPad横屏和竖屏的情况。
iOS开发技巧 - Size Class与iOS 8多屏幕适配(一)的更多相关文章
- 【转】几点 iOS 开发技巧
[译] 几点 iOS 开发技巧 原文:iOS Programming Architecture and Design Guidelines 原文来自破船的分享 原文作者是开发界中知晓度相当高的 Mug ...
- iOS开发技巧系列---详解KVC(我告诉你KVC的一切)
KVC(Key-value coding)键值编码,单看这个名字可能不太好理解.其实翻译一下就很简单了,就是指iOS的开发中,可以允许开发者通过Key名直接访问对象的属性,或者给对象的属性赋值.而不需 ...
- 几点iOS开发技巧
转自I'm Allen的博客 原文:iOS Programming Architecture and Design Guidelines 原文来自破船的分享 原文作者是开发界中知晓度相当高 ...
- iOS开发技巧
一.寻找最近公共View 我们将一个路径中的所有点先放进 NSSet 中.因为 NSSet 的内部实现是一个 hash 表,所以查找元素的时间复杂度变成了 O(1),我们一共有 N 个节点,所以总时间 ...
- iOS开发技巧系列---使用链式编程和Block来实现UIAlertView
UIAlertView是iOS开发过程中最常用的控件之一,是提醒用户做出选择最主要的工具.在iOS8及后来的系统中,苹果更推荐使用UIAlertController来代替UIAlertView.所以本 ...
- iOS开发技巧 -- 复用代码片段
如果你是一位开发人员在开发过程中会发现有些代码无论是在同一个工程中还是在不同工程中使用率会很高,有经验的人会直接封装在一个类里,或者写成一个宏定义或者把这些代码收集起来,下次直接使用,或者放到xcod ...
- 李洪强iOS开发之零基础学习iOS开发】【02-C语言】01-概述
前面已经给大家介绍了iOS开发相关的一些基础知识,其实iOS开发就是开发iPhone\iPad上的软件,而要想开发一款软件,首先要学习程序设计语言.iOS开发需要学习的主要程序设计语言有:C语言.C+ ...
- iOS开发技巧-2
1,打印View所有子视图 po [[self view]recursiveDescription] 2,layoutSubviews调用的调用时机 * 当视图第一次显示的时候会被调用 * 当这个视图 ...
- IOS开发技巧快速生成二维码
随着移动互联网的发展,二维码应用非常普遍,各大商场,饭店,水果店 基本都有二维码的身影,那么ios中怎么生成二维码呢? 下面的的程序演示了快速生成二维码的方法: 在ios里面要生成二维码,需要借助一个 ...
随机推荐
- 基于设备树的TQ2440 DMA学习(2)—— 简单的DMA传输
作者 彭东林 pengdonglin137@163.com 平台 TQ2440 Linux-4.9 概述 上一篇博客分析了DMA控制器的寄存器,循序渐进,下面我们直接操作DMA控制器的寄存器实 ...
- Windows Phone本地数据库(SQLCE):11、使用LINQ查询数据库(翻译) (转)
这是“windows phone mango本地数据库(sqlce)”系列短片文章的第十一篇. 为了让你开始在Windows Phone Mango中使用数据库,这一系列短片文章将覆盖所有你需要知道的 ...
- Java异常(三) 《Java Puzzles》中关于异常的几个谜题
概要 本章介绍<Java Puzzles>中关于异常的几个谜题.这一章都是以代码为例,相比上一章看起来更有意思.内容包括:谜题1: 优柔寡断谜题2: 极端不可思议谜题3: 不受欢迎的宾客谜 ...
- NSString 拼接字符串
NSString* string; // 结果字符串 NSString* string1, string2; //已存在的字符串,需要将string1和string2连接起来 //方法1. strin ...
- 【python】安装Python 的IDE--PyCharm
[百度网盘-技术-pycharm破解需要的有安装包和破解jar] ================================================== 安装Tensorflow开发环境 ...
- 从零開始学android<使用嵌套布局实现计算器界面.十七.>
所谓的嵌套布局就是在一个文件里嵌套多个布局文件 <span style="font-size:18px;"> <LinearLayout android:layo ...
- poj Kaka's Matrix Travels
Kaka's Matrix Travels 题目: 给出一个矩阵.求仅仅能向下或者向右的情况下能得到的最大和.一般的是指遍历一次,而这个是能够反复走K次.每经过一次后就把该点设为0.求最大和. 算法: ...
- Java获取URL链接的文件类型
问题发生: Java从网络批量读取图片并保存至本网站服务器后再插入文章中 今天转入一篇文章 http://news.qq.com/a/20170605/045860.htm 发现图片未能成功上传 查看 ...
- Swift - transform.m34动画示例
Swift - transform.m34动画示例 效果 源码 https://github.com/YouXianMing/Swift-Animations // // CATransform3DM ...
- 每天一个linux命令:df 命令
linux中df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况.可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息. 1.命令格式: df [选项] [文件] 2.命 ...