У меня возникли трудности с получением правильного выравнивания элементов в моем расширении Центра уведомлений. Я хотел бы привести элементы в соответствие с применяемыми по умолчанию полями - он должен быть выровнен с первым символом в имени приложения, а правый - с приложенным дополнением. Если вы заметили строки в расширении Календаря, я стараюсь точно сопоставить эти поля (хотя в некоторых случаях они тоже не совсем корректны).Правильно выравнивать элементы в виджетах Центра уведомлений с помощью автоматической компоновки
У меня есть мои элементы, созданные с помощью Auto Layout, все сделано программно. Я установил ведущее значение, равное self.view
, ведущему и ведущему к отставанию self.view
. Когда я запускаю расширение на разных устройствах, заполнение подкладок является непоследовательным, в то время как трейлинг всегда прозрачен для дальнего края.
Если я изменю его только с Leading и Trailing на LeadingMargin и TrailingMargin, он окажется таким же. Если я изменил его, чтобы выровнять 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 (Портрет/Пейзаж):
Можете ли вы распечатать результаты экрана? –
@AshrafTawfeeq Да, см. Новое редактирование – Joey