iOS8自动布局编程相对布局边距

iOS8自动布局编程相对布局边距,第1张

概述我有一个UI元素(实际上是UISwitch,但实际上并不重要),它们在引导和拖尾空间中都被固定在界面生成器中. Xcode 6中的约束看起来像这样: 领先空间的限制是有效的.约束值为42.0分. 这正是我想要的,因为对于不同的设备,我可以在UIView上更改layoutMargins属性,约束将正常工作,以增加视图之间的边距. 现在我想在代码中添加另一个视图,这个视图也会占据领先地位和尾随空间,从 我有一个UI元素(实际上是UISwitch,但实际上并不重要),它们在引导和拖尾空间中都被固定在界面生成器中. Xcode 6中的约束看起来像这样:

领先空间的限制是有效的.约束值为42.0分.

这正是我想要的,因为对于不同的设备,我可以在UIVIEw上更改layoutmargins属性,约束将正常工作,以增加视图之间的边距.

现在我想在代码中添加另一个视图,这个视图也会占据领先地位和尾随空间,从而将SuperVIEw设置为相同的layoutmargins将会起作用.

我使用以下语法的视觉格式语言固定视图:

NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"|-42.0-[separatorVIEw]-42.0-|" options:0 metrics:nil vIEws:NSDictionaryOfVariableBindings(self.contentVIEw,separatorVIEw)];[self.contentVIEw addConstraints:constraints];[self.contentVIEw setNeedsUpdateConstraints];

这是有效的,但是layoutmargins属性没有使用这个约束的效果,所以显然没有固定的边缘,而是直接到超级视图.

所以我的问题是:

如何使用视觉格式语言将UI元素空间固定在代码中?或者如果不可能,如何使用constraintWithItem:attribute:relatedBy:toItem:attribute:multiplIEr:constant:API?

谢谢!

解决方法 在iOS8中,视觉格式语言已更新,以便“| – ”或“ – |”将默认使用由supervIEw的layoutmargins属性定义的间距.

所以使用视觉格式语言的答案如下:

// programmatically set the layoutmargins,only if// you want non-default values and they are not already set in IB!self.contentVIEw.layoutmargins = UIEdgeInsetsMake(0,42,42); // set left and right margins to 42// assume: seperatorVIEw is already a subvIEw of self.contentVIEw// separatorVIEw will use the constraints because we write "-" between it and the supervIEw edgeNSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"|-[separatorVIEw]-|" options:0 metrics:nil vIEws:NSDictionaryOfVariableBindings(separatorVIEw)];[self.contentVIEw addConstraints:constraints];

如果要通过直接API创建约束时引用布局边距,则使用新的仅限iOS8布局属性:

NSMutableArray * constraints = [NSMutableArray array]; [constraints addobject:[NSLayoutConstraint constraintWithItem:self.contentVIEw      attribute:NSLayoutAttributeleftmargin      relatedBy:NSLayoutRelationEqual      toItem:separatorVIEw     attribute:NSLayoutAttributeleft     multiplIEr:1.0     constant:0]];[constraints addobject:[NSLayoutConstraint constraintWithItem:self.contentVIEw      attribute:NSLayoutAttributeRightmargin      relatedBy:NSLayoutRelationEqual      toItem:separatorVIEw     attribute:NSLayoutAttributeRight     multiplIEr:1.0     constant:0]];[self.contentVIEw addConstraints:constraints];
总结

以上是内存溢出为你收集整理的iOS8自动布局编程相对布局边距全部内容,希望文章能够帮你解决iOS8自动布局编程相对布局边距所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1095194.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存