Пропорция UIImageview с автоматической компоновкой stackview

Я использую UIStackView, а размер стека - «Заполнить пропорционально».

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

В первом представлении вышеприведенной иерархии у меня есть UIImageView с соотношением сторон 1:1.

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

Но по какой-то причине контроллер представления показывает предупреждение о неуместном представлении. Почему? Я не могу понять, что не так с моими ограничениями.

Во-вторых, если я буду принимать кадры изменения и использовать другие варианты устройств, чем когда-то, UIImageView высота и ширина не будут одинаковыми, они изменятся независимо от соотношения 1: 1. например, если ширина и высота 70:70, то после изменения устройства они изменились на 70:71 или 69,5:10:5 .. что здесь происходит ??

После принятия кадров обновления: (проверьте ширину и высоту UIImageView, где ширина! = высота для соотношения 1: 1)

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

Я делаю что-то не так здесь?

И еще одна вещь: моя пропорция высоты для трех представлений равна 135, 105 и 240 соответственно, но когда я снова открываю проект, она изменилась на 160, 160 и 151. Итак, это поведение по умолчанию?

Вот ссылка на демонстрацию, если вы хотите проверить эту проблему.


person EI Captain v2.0    schedule 25.11.2016    source источник
comment
вы не добавляете ограничения к правильному управлению.   -  person Abdul Rehman    schedule 25.11.2016
comment
Что ты имеешь в виду? @AbdulRehmanWarraich ... я добавляю ограничение к его суперпредставлению ... почему это неправильное управление?   -  person EI Captain v2.0    schedule 25.11.2016
comment
вам нужно начать снизу в иерархии. Сначала добавьте ограничение в stackView, затем во внутренний вид, а затем в ImageView.   -  person Abdul Rehman    schedule 25.11.2016
comment
да, это то, что я делаю ... @AbdulRehmanWarraich, и поэтому есть предупреждение, а не ошибка ... если я не даю никаких ограничений для супервизоров, тогда должна быть ошибка, а не предупреждение   -  person EI Captain v2.0    schedule 25.11.2016
comment
позвольте мне проверить ваш код.   -  person Abdul Rehman    schedule 25.11.2016
comment
Вам нужно исправить ширину и высоту изображения?   -  person Abdul Rehman    schedule 25.11.2016
comment
нет ... я хочу соотношение изображения ... и поэтому этот вопрос задан :) в противном случае я знаю, что это исправило это предупреждение   -  person EI Captain v2.0    schedule 25.11.2016
comment
выберите изображение и нажмите «Обновить рамку» и «Поделиться экраном».   -  person Abdul Rehman    schedule 25.11.2016
comment
@AbdulRehmanWarraich, не могли бы вы проверить мой полный вопрос, где я уже рассказывал об этом, и есть проблема ..   -  person EI Captain v2.0    schedule 25.11.2016


Ответы (2)


Это потому, что вы не добавили ведущее ограничение.

Вам нужно установить y позицию imageView.

Вот проект ссылка

person Vadim Kozak    schedule 25.11.2016
comment
У меня уже есть центр X .. так что это означает, что он должен быть в центре с верхним и нижним ограничением и соотношением сторон ... нет необходимости указывать здесь ведущее ограничение ... - person EI Captain v2.0; 25.11.2016
comment
@vadim нет необходимости в начальном ограничении, если горизонтальный центр добавляется с ограничением по ширине. - person Abdul Rehman; 25.11.2016
comment
@VadimKozak мое ограничение и вопрос не связаны с исправлением ширины и высоты ... речь идет о пропорциональной высоте и ширине изображения - person EI Captain v2.0; 25.11.2016

Я проверил ваш проект, и нет никаких проблем вообще. Выберите только ImageView и нажмите «Обновить кадр». И установите верхнее и нижнее пространство равными. Соотношение сторон округляется так, чтобы разница составляла 1 или меньше.

Соотношение сторон рассчитывается в соответствии с высотой просмотра, а высота изображения всегда равна (высота просмотра - 61), а ширина округляется.

Надеюсь, поможет.

person Abdul Rehman    schedule 25.11.2016
comment
моя высота пропорции для трех представлений равна 135, 105 и 240 соответственно, но когда я снова открываю проект, она изменилась на 160, 160 и 151. Итак, это поведение по умолчанию? попробуйте изменить высоту пропорций на 135, 105 и 240 соответственно, а также изменить устройства и проверить ширину и высоту - person EI Captain v2.0; 25.11.2016
comment
Вы хотите исправить высоту для представлений? ------- Если да, то добавьте ограничение по высоте ко всем представлениям и удалите нижнее ограничение представления стека ------- если нет, то установите равную высоту каждого представления для основного представления и соответственно измените множитель. - person Abdul Rehman; 25.11.2016