StupidBeauty
Read times:1031Posted at:Thu Jun 19 05:59:07 2014
- no title specified

苹果开发教程翻译:iOS 7 自动布局教程:第2部分,Beginning Auto Layout Tutorial in iOS 7: Part 2,第三页

上一页

下载 这个教程的资源文件 ,然后解压。妳会看到一个Images目录——将这个目录添加到项目中。将Ray.png设置为该图片视图的图片属性,将该图片视图的模式设置成Aspect Fit,将它的背景颜色设置成白色。修改文本标签的文字内容,例如“Ray”

现在,布局应当是这样的:

注意看,绿色视图里面的那些约束变成橙色了。这件事是在妳将图片拖入到图片视图中去的时候发生的。为什么妳的布局会突然变成无效的呢?幸运的是,妳不用自己去猜,让Xcode告诉妳哪里出问题了吧。点击Document Outline View Controller Scene 旁边的那个红色小箭头,以查看问题列表:

妳遇到了一个Content Priority Ambiguity错误。听起来狠迷惑人。它的意思是:如果图片视图和文本标签对象都没有固定的高度的话,那么,当绿色视图的高度发生变化时, 自动布局 系统不知道该如何安排里面两个视图的高度。(看起来,Interface Builder好象忽略了一点,那就是,我们实际上为绿色视图设置了一个固定高度(Height)约束。)

假设,在某个时候,妳的应用程序中,绿色视图的高度增加了100点。 自动布局 怎么知道,这 100 点的空间应该怎么在文本标签和图片视图之间分配?是让图片视图的高度增加100点,而让文本标签保持尺寸不变?或者,让文本标签的高度增加,而让图片视图的尺寸保持不变?是让它们各增大50点的高度,还是分配为25/7540/60或是其它的组合?

如果妳不解决这个问题的话,那么, 自动布局 系统就需要进行猜测,其结果就是不可预料的。

正确的解决方法是,设置文本标签对象的“Content Compression Resistance Priority”。妳将在日后学到更多相关信息。此刻,先解决眼前的问题,切换到该文本标签对象的Size inspector,将它的竖直方向的(verticalContent Compression Resistance Priority设置751。这会使得它比图片视图的优先级(priority)要大1.仍然在这个界面上,将Content Hugging Priority设置252

现在,那些工型符号应当重新变成蓝色了, 自动布局 的警告也消失了。

加入其它的头像

将这个绿色视图拖放到主视图的左上角去。记住,绿色视图本身还具有Horizontal SpaceVertical Space约束呢,它们决定了绿色视图在亲代视图中的位置。这些约束仍然存在,此时,它们导致该视图的位置“放偏了”。

要想修复这个问题,就按下Resolve Auto Layout Issues按钮,然后选择Update Constraints。之前,遇到这种情况时,妳使用的是Update Frames,那种选项会移动该视图并且改变它的尺寸以迁就当前的约束。此处,妳要做相反的事:妳想要这些约束更新自己的值以迁就该视图当前的几何属性。

注意,此时,顶部的Vertical Space约束变成负值了。这是因为,这个约束是关联到顶部布局参考线(Top Layout Guide)的。但是,没人说过,约束不能为负值,所以,妳不用管这个。(如果妳实在看着这个不爽,那么,删除已有的“Vertical Space (-20)”约束,而重新加入一个约束,让该视图与窗口的顶部对齐。)

现在Horizontal Space的值为0,并且,它是由一条厚厚的与窗口左边缘重叠的蓝色实线来表示的。所以说,即使该视图是完全处于角落处的,它仍然需要用约束来表明它的位置:

选中绿色视图,按下⌘D键来创建一个副本。将该副本移动到右上角:

注意看,工型符号是橙色的。当妳创建副本时,它丢失了与自己的X和Y坐标相关的约束。要修复这个问题的话,将这个视图的位置设置为与窗口的顶部和右边缘对齐。

再次创建两个副本,并且分别将它们移动到左下角和右下角。同样地,让它们与角落对齐。

将屏幕布局修改成以下这个样子:

这些都是优秀的程序猿!:-)

下一页

未知美人

未知美人

未知美人

Your opinions
Your name:Email:Website url:Opinion content:
- no title specified

HxLauncher: Launch Android applications by voice commands