Установка ширины, высоты, соотношения сторон и ограничений UIImageView X, Y - PullRequest
0 голосов
/ 17 мая 2019

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

Я уже пробовал много ответов здесь, но может показаться, что это работает.

import UIKit

class GuestLoginViewController: UIViewController {

    let headerImage = UIImageView()

    override func viewDidLoad() {
        super.viewDidLoad()

        setHeaderImage()
    }

    func setHeaderImage() {
        view.addSubview(headerImage)
        headerImage.frame = CGRect(x: 0, y: 0, width: super.view.frame.width, height: 95)
        headerImage.translatesAutoresizingMaskIntoConstraints = false
        headerImage.mask?.contentMode = UIView.ContentMode.redraw
        headerImage.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
        headerImage.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
        headerImage.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true

        headerImage.image = UIImage(named: "header")
        view.sendSubviewToBack(headerImage)
    }


}

1 Ответ

0 голосов
/ 18 мая 2019

Как только вы установите headerImage.translatesAutoresizingMaskIntoConstraints = false, frame игнорируется. Вам нужно установить некоторые ограничения, чтобы установить высоту вашего UIImageView. К сожалению, содержимое изображения не влияет на высоту UIImageView.

Установите либо:

  1. ограничение абсолютной высоты
  2. смещение от нижней части superView
  3. высота относительно ширины с множителем («ограничение соотношения сторон»)

На основании моего комментария вы выключили headerImage.translatesAutoresizingMaskIntoConstraints = false, и это сработало.

Это дает вам дополнительные ограничения (ваши 3 плюс 4, которые генерируются из фрейма), но, к счастью, они не конфликтуют.

Вместо этого я бы предложил оставить для translatesAutoresizingMaskIntoConstraints значение false и установить ограничение для height:

headerImage.heightAnchor.constraint(equalToConstant: 95).isActive = true
...