У меня есть UIImageView внутри UIView, я добавляю 4 ограничения:

1) Top equal to top of the screen
2) center equal to center of screen
3) width equal to screen width 
4) aspect ratio of 1:1

Проблема в том, что на iPhone 11 Pro Max все выглядит нормально, но когда я изменяю разрешение на меньшее, UIImageView занимает почти весь экран, можно ли определить, что UIImageView не будет занимать более 50% экрана?

enter image description here enter image description here enter image description here

ИЗМЕНИТЬ


enter image description here

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

-1
YosiFZ 11 Дек 2019 в 16:51
В раскадровке выберите просмотр изображения, затем на правой панели выберите Content Mode: Соотношение сторон
 – 
Nalov
11 Дек 2019 в 19:30

3 ответа

Лучшее, что вы можете сделать, - это убедиться, что imageView не превышает более 50% от окружающего вида по высоте. Но вы не можете гарантировать, что горизонтальные края будут прикреплены к передним и задним якорям.

Попробуйте что-нибудь подобное и посмотрите, сработает ли это для вас:

override func viewDidLoad() {
    super.viewDidLoad()

    let imageView = UIImageView()
    imageView.translatesAutoresizingMaskIntoConstraints = false
    imageView.backgroundColor = .red

    view.addSubview(imageView)

    let dimension = min(view.frame.width, view.frame.height / 2)
    imageView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true
    imageView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
    imageView.widthAnchor.constraint(equalToConstant: dimension).isActive = true
    imageView.heightAnchor.constraint(equalToConstant: dimension).isActive = true
}
0
Rob 11 Дек 2019 в 17:13

Добавьте ограничение «высота равна высоте экрана». Нажмите на ограничение, затем измените Multiplier = 0.5. Это гарантирует, что на любом устройстве высота imageView будет равна половине корневого представления. введите описание изображения здесь

0
Nalov 11 Дек 2019 в 17:17

Установите приоритет 500 для равного ограничения ширины, чем добавьте меньшее или равное ограничение по высоте с множителем 0,5

enter image description here

Теперь он подходит, когда экран меньше

enter image description here

0
Yervand Saribekyan 11 Дек 2019 в 17:35
Я пробовал, но получаю большой UIImageview, как вы можете видеть в моем сообщении.
 – 
MTA
11 Дек 2019 в 18:33
Установите приоритет 750 на высоту. см. на изображении
 – 
Yervand Saribekyan
11 Дек 2019 в 20:54