#ios #iphone #button #interface-builder
#iOS #iPhone #кнопка #интерфейс-конструктор
Вопрос:
У меня проблема, которую я не знаю, как исправить. У меня есть несколько кнопок, которые отлично отображаются в построителе интерфейса. Но если я попытаюсь запустить приложение, размер двух кнопок изменит размер их изображения. Это приводит к довольно уродливым кнопкам большого размера.
Я понятия не имею, что может вызвать эту проблему, я думал, что это как-то связано с ограничениями, но я не получил никаких ошибок или предупреждений. И, как уже было сказано ранее, все это прекрасно отображается в конструкторе интерфейсов.
Кто-нибудь из вас сталкивался с такими же или похожими проблемами и знает решение?
Ответ №1:
Это проблема с ограничением автозапуска. Когда вы запускаете приложение в симуляторе / устройстве, оно пытается выполнить установленные ограничения (в данном случае расстояние кнопки от представления / экрана) — даже растягивая изображения / кнопки, чтобы убедиться, что это происходит.
Одним из решений будет установка ограничений для высоты / ширины кнопок. Однако это может привести к конфликтам с другими ограничениями. Вы увидите предупреждающий индикатор на панели раскадровки в IB.
Автозапуск ограничения IB требуют немного времени, чтобы разобраться. Не бойтесь полностью очистить их и экспериментировать, пока все не заработает по назначению. Параметр сброса к предлагаемым ограничениям работает большую часть времени, но тоже не идеален.
Комментарии:
1. Спасибо, я все удалил и добавил новые ограничения, и это, похоже, решило проблему. Но, по моему честному мнению, это все еще недостаток дизайна в xCode. Почему он не может показать, как кнопки будут отображаться на устройстве? В любом случае, спасибо за вашу помощь. Я бы поддержал вас, если бы мог.
2. Я считаю автозапуск несовершенной попыткой адаптироваться к различным размерам экрана и ориентации устройства. Я с осторожным оптимизмом ожидаю, что с iOS 8 / Xcode 6 мы увидим значительные улучшения, учитывая, что компоновка будет определяться новой концепцией sizeClass. (до тех пор, помните, не бойтесь отбросить ограничения! 🙂