0

我很难在通知中心扩展中获得正确的元素对齐方式。我想对齐元素以尊重应用的默认边距 - 它应该与应用程序名称中的第一个字符左对齐,并与应用的一些填充右对齐。如果您注意到日历扩展中的线条,我正在尝试完全匹配这些边距(尽管在某些情况下这些边距似乎也不太正确)。

我使用自动布局设置了我的元素,所有这些都以编程方式完成。我已将前导设置为self.view' 的前导和尾随self.view' 的尾随。当我在各种设备上运行扩展时,装货填充不一致,而尾随始终清晰到远边缘。

如果我将它从“前导和尾随”更改为“前导边距”和“尾随边距”,它看起来完全一样。如果我将其更改为将元素的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 肖像: 在此处输入图像描述

iPhone 6 Plus 肖像: 在此处输入图像描述

iPhone 6 Plus 横向: 在此处输入图像描述

iPad(纵向/横向): 在此处输入图像描述

4

1 回答 1

0

看起来这是一个影响 iOS 8.2 及更早版本的问题,因为它的行为符合预期,并且如果我在 iOS 8.3 中使用 Leading -> Leading and Trailing -> TrailingMargin 则保持一致。

于 2015-03-07T23:00:57.200 回答