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

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

Скриншот

4 ответа

Решение

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

введите описание изображения здесь

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

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

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

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

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

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

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

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

Другие вопросы по тегам