У меня возникли некоторые проблемы с Autolayout
шириной на всех размерах экрана для расширения клавиатуры.Почему autolayout есть проблемы с этим макетом
Сначала он работал нормально, но затем внезапно начал выплевывать ряд ошибок, независимо от ширины экрана. Я ничего не менял, я даже пытался удалить приложение, очистить проект и выложить все с нуля.
Это мой макет:
| - 8 - (50) - >=8 - (130) - 8 - (130) - 8 - |
priority (50) = 750, everything else = 1000
- Там в
8 point space between the superview and button 1
, который имеетwidth of 50, but a priority of 750
. - Тогда есть
8 point or greater space between button 1 and button 2
, в котором естьwidth of 130
. - Тогда есть
8 point space between button 2 and button 3
, который также имеетwidth of 130
. - Наконец-то есть
8 point space between button 3 and the superview
.
Это какой-то образом вызывая проблему не только от 320 точки шириной 4 дюйма экрана, но и 375 точка ширину 4,7 дюйма экрана и 414 Точка широкий 5.5 inch экран.
Насколько я вижу, не должно быть никаких проблем, так как максимальная ширина элементов (8 + 50 + 8 + 130 + 8 + 130 + 8) 342 очка. Это меньше, чем экраны 4.7 и 5.5 inch. На 4-дюймовый, я решаю это, разбив 50-ти точечную ширину на кнопке 1, поэтому общее число составляет 320 баллов.
Он отлично выглядит как на симуляторе, так и на устройстве, однако консоль выплевывает несколько ошибок Unable to simultaneously satisfy constraints
(3, если быть точным).
Вот лог:
1: (
"<NSLayoutConstraint:0x1740954a0 H:[UIButton:0x137e0cb80'Last sentence'(130)]>",
"<NSLayoutConstraint:0x1740955e0 H:[UIButton:0x137e0cda0'Pasteboard'(130)]>",
"<NSLayoutConstraint:0x174095810 H:|-(8)-[UIButton:0x137d0ba60] (Names: '|':UIView:0x137e0c1b0)>",
"<NSLayoutConstraint:0x1740958b0 H:[UIButton:0x137d0ba60]-(>=8)-[UIButton:0x137e0cda0'Pasteboard']>",
"<NSLayoutConstraint:0x174095950 H:[UIButton:0x137e0cda0'Pasteboard']-(8)-[UIButton:0x137e0cb80'Last sentence']>",
"<NSLayoutConstraint:0x1740959f0 H:[UIButton:0x137e0cb80'Last sentence']-(8)-| (Names: '|':UIView:0x137e0c1b0)>",
"<NSLayoutConstraint:0x170094ff0 'UIView-Encapsulated-Layout-Width' H:[UIView:0x137e0c1b0(55)]>"
)
Will attempt to recover by breaking constraint <NSLayoutConstraint:0x1740955e0 H:[UIButton:0x137e0cda0'Pasteboard'(130)]>
2: (
"<NSLayoutConstraint:0x1740954a0 H:[UIButton:0x137e0cb80'Last sentence'(130)]>",
"<NSLayoutConstraint:0x174095810 H:|-(8)-[UIButton:0x137d0ba60] (Names: '|':UIView:0x137e0c1b0)>",
"<NSLayoutConstraint:0x1740958b0 H:[UIButton:0x137d0ba60]-(>=8)-[UIButton:0x137e0cda0'Pasteboard']>",
"<NSLayoutConstraint:0x174095950 H:[UIButton:0x137e0cda0'Pasteboard']-(8)-[UIButton:0x137e0cb80'Last sentence']>",
"<NSLayoutConstraint:0x1740959f0 H:[UIButton:0x137e0cb80'Last sentence']-(8)-| (Names: '|':UIView:0x137e0c1b0)>",
"<NSLayoutConstraint:0x170094ff0 'UIView-Encapsulated-Layout-Width' H:[UIView:0x137e0c1b0(55)]>"
)
Will attempt to recover by breaking constraint <NSLayoutConstraint:0x1740954a0 H:[UIButton:0x137e0cb80'Last sentence'(130)]>
3: (
"<NSLayoutConstraint:0x174095810 H:|-(8)-[UIButton:0x137d0ba60] (Names: '|':UIView:0x137e0c1b0)>",
"<NSLayoutConstraint:0x1740958b0 H:[UIButton:0x137d0ba60]-(>=8)-[UIButton:0x137e0cda0'Pasteboard']>",
"<NSLayoutConstraint:0x174095950 H:[UIButton:0x137e0cda0'Pasteboard']-(8)-[UIButton:0x137e0cb80'Last sentence']>",
"<NSLayoutConstraint:0x1740959f0 H:[UIButton:0x137e0cb80'Last sentence']-(8)-| (Names: '|':UIView:0x137e0c1b0)>",
"<NSLayoutConstraint:0x170094ff0 'UIView-Encapsulated-Layout-Width' H:[UIView:0x137e0c1b0(0)]>"
)
Will attempt to recover by breaking constraint <NSLayoutConstraint:0x1740958b0 H:[UIButton:0x137d0ba60]-(>=8)-[UIButton:0x137e0cda0'Pasteboard']>
Я почесал голову с этим весь вечер. У вас есть какие-то предложения?
Возможно, я должен был упомянуть, что это пользовательское расширение клавиатуры. Есть ли у вас опыт в этом, это общая проблема или что-то, что я вызвал? – Aleksander
Извините, я об этом не знаю. –
Это прекрасно, я думаю, что в какой-то момент я узнаю. На данный момент, однако, снижение приоритета ограничения на задний край супервизора делало трюк! Благодаря! – Aleksander