iOS 8 by Tutorials (section2:开始自适应布局)

iOS 8 by Tutorials(翻译1.2)

1.2、开始自适应布局

ios8的巨大变化中,Adaptive Layout的引用给iOS设计师带来帮助。在设计项目时,你可以创建简单的布局来适应当前的iOS8设备,这一章节是Adaptive Layout的入门,你可以学到通用的Storyboardssize classes、布局和订制字体及超有用的助理编辑预览(通过storyboards清晰的看出项目结构)。现在你可以从头开始创建用关于天气的项目,如果你不是Auto Layout的粉丝,也没有关系,本章的第一部分提供了循序渐进的方法使用自动布局来构建一个项目,你会发现在不使用一行代码时也能完成很多界面。

  • 通用的故事版

通用的故事版将是你加入Auto Layout旅途的第一步,同样的storyboard在iOS8上可以用于iPads和iPhones,它不需要保持一套storyboard只能同步的服务一个设备,并且还充满了错误。建立一个Single View Application项目,点开Main.storyboard,它是一个单一的storyboard但兼容所有的设备而不管设备屏幕大小,它里面包含了一个简单的view controller,但是确实一个不熟悉的大小: 

是的,它是一个”粗糙的正方形”,在File Inspector中选择Use Size Classes,你就可以实现“一个故事版适合所有”:

这个选项在iOS8的新项目是默认存在的,你也可以在更新你的项目时使用这个新的故事版。你可以在本章的第4节Adaptive View Controller Hierarchies学到在iOS8中如何更新久的故事版。

那就开始吧,打开Main.storyboard,拖一个ImageView在界面上,在Size Inspector设置它的X的position为150Y的position为20Width300Height265。拖一个View在界面上,在Size Inspector设置它的X的position为150Y的position为315Width300Height265

选择刚刚加进去的View打开Identity Inspector栏输入TextContainer在你Label框中。如下图: 

这样很难看出刚刚加进去的View在哪里,这是因为它和背景颜色都是白色的。为了区别他们,现在设置背景色为Red: 74, Green: 171, Blue: 247TextContainer view的背景色为Red: 55, Green: 128, Blue: 186. ,好了,现在看到的是这样的: 

现在有2个view在我们的视图上了,下面的任务就是给他们设置布局约束了。

  • 添加布局约束条件

    选择imageView,在auto layout toolbar点击Align按钮,选择Horizontal Center in Container,确保它的值为0,然点击Pin按钮,添加一个top spacing to nearest neighbor constraint0,如下图: 

刚刚的约束条件确保了imageView离界面top的距离是固定的、左右是居中的。现在我们需要配置imageView和textContainer的间距。Ctrl-dragimageView到Ctrl-drag,像这样: 

会出现一个menu,选择Vertical Spacing,像这样: 

这个约束条件决定了 imageView底部和TextContainerView顶部的竖直间距。选择Size Inspector,再选择imageView你可以看到这样: 

可以看出imageView上有3个约束条件 ,你可以在size inspector轻松的配置每一个约束条件。在Bottom Space To: TextContainer的约束条件点击Edit,你可以设置这个约束条件的属性,设置Constant20,如下图: 

好了,现在已经实现了TextContainerView固定在imageView的底部的20px了。但是我们还是需要添加其他的三个约束条件在TextContainerView上:选择TextContainerView,点击Pin来显示Add New Constraints界面,在Spacing to nearest neighbor中选择leftrightbottom值为0,确保Constrain to marginsunchecked,这个表示移除这个界面的所有边距(填充到左右下),点击Add 3 constraints,添加新的3个约束条件到TextContainerView中, 如图: 

现在我们的故事版是这样的: 

这个时候你会注意在界面上有一些黄色的约束线,这表明这些约束有问题,需要你的注意。它会在故事版自动更新时遵循约束条件,但是你立刻选择自动更新你的imageView会缩小为zero size。这是因为你的imageView没有任何的内容--意味着它内部的高和宽都是0(需要4个方向进行约束),如果不提供物理(图片)的宽高限制Auto Layout会依赖于界面的内部大小来决定宽高。 在Project Navigator中,打开Images.xcassets选择下面的+再选择New Image Set按钮: 

双击刚刚添加的Image并且重命名为cloud,如下图: 

这个cloud是一个图片的集合,包含了non-RetinaRetinaRetina HD,只要在项目中判断存在了该图片,那么在你引用该图片的名字时iOS就能在runtime获得图片资源。 现在cloud图片集是空的,你可以在此的后面下载cloud_images.zip,将cloud_small.png拖进1x[email protected]拖进2x[email protected]拖进3x,如下图: 

选择3x,点击键盘的space键,可以看到[email protected]的原型图: 

加入了图片资源后,点击Main.storyboard再选择imageView,将Image设置为cloud,设置View\ModeAspect Fit,如下图: 

现在图片也有了,但是还是能看到一些黄色的约束线,我们还是需要做点什么:首先选择View Controller‘s的view,选择Resolve Auto Layout Issues,最后选择All Views\Update Frame: 

这个时候View Controller会重新安排界面去自动的解决不满足的约束条件,这将让我们的故事版看起来是这样的: 

  • 预览助理编辑器

    正常情况下我们是这样测试我们的通用故事版的:分别在iPad, iPhone 4s, 5s, 6 and 6 Plus的模拟器上运行,这还的测试方向。这个过程无疑是很费力的,但是在Xcode 6上面使用Preview Assistant Editor(预览助理编辑)是更棒的体验!

打开Main.storyboard选择Assistant Editor菜单栏: 

这个时候故事版就会分为2块,选择Automatic -> Preview -> Main.storyboard

预览助理编辑就会出现另外一个4-inch(iPhone)的故事版: 

iPhone 4-inch中点击界面的底部的旋转按钮,界面将会水平显示: 

在多个模拟器显示中,这是一个巨大的改变,但是等等,还有等多的!点击+你会发现还有更多(真棒): (2014年10月26日上午1:16)

添加iPhone 5.5-inchiPad,现在的界面是这样的: 

有没有横屏时发现有点奇怪呢?对!因为图片太大了。现在需要在imageView添加新的约束条件。Ctrl-dragimageView到controller’s view来创建新的约束,选择Equal Heights: 

现在界面上会有一些红色的约束条件。这是因为刚刚添加的约束和存在的有冲突。选择刚刚的约束条件,选择Document Outline打开Attributes Inspector,如果First Item不是cloud.Height,那么在First Item选择Reverse First and Second Item: 

下一步选择RelationLess Than or Equal,设置Multiplier0.4: 

这意味这这个图片要么保持图片本身的大小,或者屏幕尺寸的40%高度,取最小值。 你会注意到在你更新了这个约束条件后界面会自动刷新: 

在自动更新后你能得到多个设备的预览吗?当然!预览助理编辑是个相当进步的东西! 介于这是一个天气项目,我们需要添加一些lable来表示城市名字和当前的温度。

  • 添加文本信息

    Main.storyboardTextContainer中添加2个Labels: 

选择上面的那个label使用AlignPin设置horizontally centertop spacing to nearest neighbor的值为10: 

接下来选择Attributes Inspector菜单栏,设置label的TextCupertinoColorWhite,字体为Helvetica Neue, Thin,字体大小:150,这时你可能发现当前文字是难以辨别的,这是因为label的frame问题,你可以很快的解决它。

选择选择另外一个label,同样使用AlignPin设置horizontally centerbottom spacing to nearest neighbor的值为10,选择Size Inspector菜单栏,界面是这样的: 

使用Attributes Inspector菜单栏设置label的Text28CColorWhite,字体为Helvetica Neue, Thin,字体大小:250

现在来需要解决之前提到的label的frame问题。选择view controller’s view,点击storyboard下面的Resolve Auto Layout Issues,再选择All Views\Update Frames,你会看到storyboard是这样的: 

2个label有点重叠吧,这不是你想要的吧。在我们修护之前还是先用assistant editor来看一下吧,在iPad上看上去很完美: 

可想而知,在iPhone上字体还是稍大了些: 

好了,你会在下一个章节来解决字体大小问题。

2014年11月10日17:31

时间: 2024-08-07 04:00:07

iOS 8 by Tutorials (section2:开始自适应布局)的相关文章

iOS 8 by Tutorials(1.4自适应字体)

1.4.自适应字体 使用定制的size classes使得当前的文字大小在iPad上能很好的显示,但是在紧凑的size classes上还是太大.不要担心——通过size classes还是能够覆盖(兼容)文字大小. 注意:和布局覆盖不一样,改变字体配置会影响基础布局,在IB更改字体配置不会遵守当前的size classes,相反,需要使用如下方法 重新选择Any Width | Any Height的Size Class,下面的栏会立即变灰——这是因为你回到了基础布局. 选择Cupertino

iOS 8 by Tutorials (Section1:自适应布局)

Section1:自适应布局 iOS8中,你将有新的方法去建立界面,你有完全独立的设备.屏幕尺寸.分辨率和设备方向(device orientation),你将会了解collections的特性.size classes和通用的Storyboards,每一个功能不仅仅在现在的设备做好最好的interfaces,我想在将来也会一样.以开放的心态去阅读下面的要点,准备吃惊吧. 1.1.自适应布局的介绍: 前些年的iPhone,可能只是一个尺寸,一种分辨率,所以我们可以将界面布局写得死死的,就算是有了

iOS StoryBoard自适应布局

原文地址:点击打开链接 通用的Storyboard 通用的stroyboard文件是通向自适应布局光明大道的第一步.在一个storyboard文件中适配iPad和iPhone的布局在iOS8中已不再是梦想.我们不必再为不同尺寸的Apple移动设备创建不同的storyboard文件,不用再苦逼的同步若干个storyboard文件中的内容.这真是一件美好的事情. 我们打开Xcode,新建一个项目: 选择iOS\Application\Single View Application创建一个单视图应用:

iOS发展 ---- 至iPhone 6自适应布局设计 Auto Layout

Apple从iOS 6增加了Auto Layout后開始就比較委婉的開始鼓舞.建议开发人员使用自适应布局,可是到眼下为止,我感觉大多数开发人员一直在回避这个问题,无论是不是因为历史原因造成的,至少他们在心底还坚守着固定布局的老传统思想. 随着iPhone6.iPhone6 Plus的到来,使用自适应布局更是迫在眉睫的事,固定布局的老传统思想脆弱的不堪一击.如今的iPhone有4种尺寸.假设算上iPad,如今Apple的iOS设备有5种尺寸. 我们在准备使用自适应布局设计应用界面之前.能够把这5种

Masonry -- 使用纯代码进行iOS应用的autolayout自适应布局

快速入门 安装 使用 CocoaPods 安装 pod 'Masonry' 推荐在你的在 prefix.pch 中引入头文件: // 定义这个常量,就可以在使用Masonry不必总带着前缀 `mas_`: #define MAS_SHORTHAND // 定义这个常量,以支持在 Masonry 语法中自动将基本类型转换为 object 类型: #define MAS_SHORTHAND_GLOBALS #import "Masonry.h" 使用 初始Masonry 这是使用MASCo

移动h5自适应布局

问题一,分辨率Resolution适配:不同屏幕宽度,html元素宽高比和字体大小,元素之间的距离自适应,使用rem单位. 问题二,单位英寸像素数PPI适配:使用rem单位,文字会发虚.段落文字,使用px单位,用media query或js来适配.标题文字可以直接使用rem单位. 问题三,设备像素比例DPR适配:1物理像素在<meta name="viewport" content="initial-scale=1, maximum-scale=1, minimum-s

【转】有了Auto Layout,为什么你还是害怕写UITabelView的自适应布局?

Apple 算是最重视应用开发体验的公司了.从Xib到StoryBoard,从Auto Layout到Size Class,每一次的更新,都会给iOS应用的开发带来不小的便利.但是,对于绝对多数iOS攻城狮来说,我们依然还是很害怕写UITabelVIew的自适应布局.当然,害怕不是因为我们不会写,或者本身有什么特殊的技术点,而是因为太麻烦.当然,文章的后半部分,会给出相应的解决方案,毕竟本文不是为了吐槽而吐槽. UITabelView的自适应布局有多麻烦? 数据类型的不确定性:种类越多,页面越复

为iPhone 6设计自适应布局

Apple从iOS 6加入了Auto Layout后开始就比较委婉的开始鼓励.建议开发者使用自适应布局,但是到目前为止,我感觉大多数开发者一直在回避这个问题,不管是不是由于历史原因造成的,至少他们在心底还坚守着固定布局的老传统思想. 随着iPhone6.iPhone6 Plus的到来,使用自适应布局更是迫在眉睫的事,固定布局的老传统思想脆弱的不堪一击.现在的iPhone有4种尺寸,如果算上iPad,现在Apple的iOS设备有5种尺寸.我们在准备使用自适应布局设计应用界面之前,可以把这5种尺寸划

Swift自适应布局(Adaptive Layout)教程

通用的Storyboard 通用的stroyboard文件是通向自适应布局光明大道的第一步.在一个storyboard文件中适配iPad和iPhone的布局在iOS8中已不再是梦想.我们不必再为不同尺寸的Apple移动设备创建不同的storyboard文件,不用再苦逼的同步若干个storyboard文件中的内容.这真是一件美好的事情. 我们打开Xcode,新建一个项目: 选择iOS\Application\Single View Application创建一个单视图应用: 设置项目名称Adapt