我在Notification Center扩展程序中获取元素的正确对齐时遇到了困难。我想对齐元素以尊重应用的默认边距 - 它应该与应用程序名称中的第一个字符保持对齐,并且与应用的某个填充对齐。如果您注意到日历扩展中的行,我正在尝试准确匹配这些边距(尽管在某些情况下这些边缘似乎也不正确)。
我使用自动布局设置了我的元素,所有这些都是以编程方式完成的。我将领先等于self.view
的前导和尾随self.view
的尾随。当我在各种设备上运行扩展时,提货填充不一致,而尾部总是清晰到远边。
如果我将它从Leading和Trailing更改为LeadingMargin和TrailingMargin,它看起来完全相同。如果我改变它以使元素的Leading与视图的LeadingMargin对齐并且跟踪视图的TrailingMargin,那么尾随似乎是所需的边缘但是在iPhone 6上向前推得太远,即使它在iPad上是完美的。在横向的iPhone 6 Plus上,前导与应用程序图标的开头对齐,尾随没有填充,但有时只有!其他时候它会增加边距。
如何配置它以正确对齐元素?
我没有实施widgetMarginInsetsForProposedMarginInsets
。
//viewDidLoad:
let label = UILabel()
label.backgroundColor = UIColor.blueColor()
label.setTranslatesAutoresizingMaskIntoConstraints(false)
self.view.addSubview(label)
self.view.addConstraint(NSLayoutConstraint(item: label, attribute: .Top, relatedBy: .Equal, toItem: self.view, attribute: .Top, multiplier: 1, constant: 0))
self.view.addConstraint(NSLayoutConstraint(item: label, attribute: .Bottom, relatedBy: .Equal, toItem: self.view, attribute: .Bottom, multiplier: 1, constant: 0))
self.view.addConstraint(NSLayoutConstraint(item: label, attribute: .Leading, relatedBy: .Equal, toItem: self.view, attribute: .Leading, multiplier: 1, constant: 0))
self.view.addConstraint(NSLayoutConstraint(item: label, attribute: .Trailing, relatedBy: .Equal, toItem: self.view, attribute: .Trailing, multiplier: 1, constant: 0))
let heightConstraint = NSLayoutConstraint(item: label, attribute: .Height, relatedBy: .Equal, toItem: nil, attribute: .Height, multiplier: 1, constant: 100)
heightConstraint.priority = 999
self.view.addConstraint(heightConstraint)
iPhone 6 Portrait:
iPhone 6 Plus Portrait:
iPhone 6 Plus横向:
iPad(人像/风景):
答案 0 :(得分:0)
看起来这是一个影响iOS 8.2及之前版本的问题,因为它的行为符合预期,如果我使用Leading - >是一致的领先和尾随 - > iOS 8.3中的TrailingMargin。