Bhu*_*hta 247 xcode storyboard ios autolayout xcode6
我正在使用自动布局和约束,并发现Constrain to margins
XCode 6中有一个选项,它在XCode 5中不存在,默认情况下会被选中.
我创建了一个测试项目,然后UITableView
在ViewController上添加了一个框架,其框架设置为与视图相同的大小并添加了约束
XCode 6 你可以看到这里,即使tableview具有与视图相同的帧,XCode建议添加-16作为约束,而XCode 5会建议添加间距0.
现在,当您取消选中"Constrain to margin"选项时,它的行为与XCode 5相同,并建议将0添加为约束
另外,我发现一旦我用Constrain添加约束来检查边距,我就不能再在XCode 5中打开storyboard文件了,所以它绝对是XCode 6中的新东西.
希望我能够正确地解释我的问题.我想了解"限制边际"实际上是什么以及何时应该而且不应该使用它.如果它非常简单明了,我会道歉.
编辑
Sco*_*Zhu 310
我完全不明白为什么人们抱怨" 在iOS 8之前,Margins会导致任何事情彻底崩溃 ".
在xib文件或故事板中设置相对于边距的约束不会使您的应用在iOS7上崩溃,并且它也不会在您的iOS7设备上产生UI差异,只要您不触及代码中的
UIView.layoutMargins
和UIView.preservesSuperviewLayoutMargins
属性即可.
布局利润代表围绕填充内部的UIView
该布局子视图当布局系统可以使用-确保的间隙的视图和一个子视图的边缘之间留下.在这方面,它非常类似于与CSS中的块相关联的填充属性.
默认情况下,UIView
每侧的布局边距为8个点,并且在Interface Builder中无法更改.但是,通过UIView.layoutMargins
在代码中设置属性(仅在iOS8上可用),您可以调整这些值.
您可以使用" 编辑器">"画布">"显示布局矩形"来显示IB以显示边距:
边距可用于帮助布局视图和子视图.UIView
默认情况下,每个都有边距,但只有在设置与边距相关的约束时,它们才会影响视图放置.
在Interface Builder中使用边距的唯一方法是在配置约束时检查" 相对边距"选项.这是在布局视图时将约束引导到使用边距而不是边缘的方法.
让我们看一下在视图及其子视图之间设置前导约束的四种不同方法.对于每个约束,我们检查所描述的第一个关联将是子视图的领先,第二个将是superview的领先.您要密切关注的是每个约束结束的相对于边距选项的检查和取消选中状态,因为它定义约束是否与边距或视图边缘相关联.
如果您决定使用边距,则此新功能(iOS8)仅影响UI开发.
通过使用边距,您可以通过更改单个属性的值来调整与共享超级视图共享共同关系的多个子视图的放置.这明确胜过用固定值设置所有相关约束,因为如果您需要更新所有间距,而不是逐个更改每个值,您可以通过使用单行更新superview的边距来同时修改所有相关放置像这样的代码:
self.rootView.layoutMargins = UIEdgeInsetsMake(0, 50, 0, 0);
Run Code Online (Sandbox Code Playgroud)
为了说明这种好处,在下面的例子中,所有子视图的左边缘都与其超视图的左边距对齐.因此,更改superview的左边距将同时影响所有子视图.
KPM*_*KPM 63
在iOS 8中,您现在可以选择相对于超视图边界的预定义边距定义约束,而不是超视图的边界本身.是的,它与您在文档中指出的布局边距完全相关.一个优点是您可以动态地或不同地为每种设备重新定义边距,并且布局将相应地更新而不修改约束.
何时使用它:当你想利用这种新的灵活性时.
何时不使用它:适用于任何针对在iOS 7或更低版本上运行的应用.
Kyl*_*son 42
UIView的财产是:layoutMargins
.请参阅Apple Docs.基本上,如果布局边距是8,8,8,8(默认值),则带有0前导空间到容器边距的约束将具有x位置8. 请注意,这仅适用于iOS8或更高版本.
对于不希望他们的约束进入容器边距的每个人:
CTRL +单击+拖动以显示约束创建弹出窗口.
如果菜单显示默认情况下创建约束到边距,请按住选项/ alt以允许对容器进行约束而不是容器边距.
现在它将显示创建约束而不是边距的选项.这是WAY我的使用速度更快.
归档时间: |
|
查看次数: |
82995 次 |
最近记录: |