Двухступенчатая автоматическая разметка
В настоящее время я создаю компонент пользовательского интерфейса для приложения iOS. Как правило, ширина компонента составляет 350 пт, который я установил внутри компонента с помощью автоматического макета:
self.widthAnchor.constraint(equalToConstant: 350.0).isActive = true
Теперь, если недостаточно места (из-за других ограничений вне компонента), я хочу, чтобы компонент стал меньше, но не плавно - я хочу, чтобы компонент чередовался только между двумя возможными размерами - 350pt обычно и 300pt шириной, если есть нет места для 350pt. Это как-то достижимо?
Пример проекта:
https://www.icloud.com/iclouddrive/055TkWS8aLqDhFDOPi-7qi8EA
Я создал очень упрощенный пример проекта для иллюстрации проблемы. Содержит пользовательский компонент (MyComponent
), который представляет собой стек с четырьмя кнопками. Этот компонент встроен в контроллер основного вида, и автоматическая разметка настроена так, чтобы он не вытек из экрана. Это хорошо работает на больших устройствах, но компонент слишком велик для экрана iPhone SE и iPhone 4. В этих случаях я бы хотел, чтобы компонент стал другого размера (в проекте этот компонент регулярно составляет 500pt и должен быть 300pt на меньших устройствах).
Причины
Причина, по которой я ищу это поведение, в значительной степени связана с дизайном. Предполагается, что этот компонент не существует в различных размерах, а только в двух конкретных размерах - "нормальный" размер и меньший размер для случаев, когда нормальный размер не подходит.