изменение свойства contentGravity в слое только для преобразования, не будет иметь эффекта

Я начал создавать очень простую игру tic-tac-toe. Основная цель - сделать изображение пропорциональным всем размерам экрана всех устройств iOS. Поэтому я помещаю изображение в ViewController, делаю его полным размером экрана, а затем помещаю его в Stack View. Я добавил ограничения для этого Stack View 0 со всех сторон. И когда я запускал симулятор, все выглядит хорошо. Но я получаю сообщение в панели консоли. Что это значит?

screenshot

Ответ 1

Это может произойти, потому что вы изменили атрибут Mode в StackView:

enter image description here

Я получил это предупреждение, когда установил режим Aspect Fit.

Ответ 2

Любое изменение слоя в UIStackView приведет к этому предупреждению. Как UIStackView из предупреждения, UIStackView - это слой с преобразованием, и он немного отличается от UIView. Согласно документации:

UIStackView является неиндексирующим подклассом UIView; то есть он не предоставляет никакого пользовательского интерфейса. Вместо этого он просто управляет положением и размером своих упорядоченных представлений. В результате некоторые свойства (например, backgroundColor) не влияют на представление стека. Точно так же вы не можете переопределить layerClass, drawRect :, или drawLayer: inContext :.

Подробнее об этом здесь.

Он может не указывать на точный источник проблемы OP, но, надеюсь, он проливает свет на то, почему поведение UIStackView не то же самое и его не следует путать с UIView.

Ответ 3

Похоже, что вы сделали совершенно правильно.

Тем не менее, мне интересно, почему вы решили поместить свое изображение в стеке, когда вы могли бы так же легко прикрепить стороны без стека. Я большой поклонник stackviews, но они не имеют смысла во всем мире. Если вы не планируете добавлять новые виды и не изменяете размер своей платы ticktactoe, я не могу ее использовать.

Ответ 4

Для кого-то, кому это нужно: я установил clipToBounds в false в StackView.

Ответ 5

вы можете вставить представление стека в UIView и установить эти свойства для этого представления.