Автоматическая настройка формата изображения - PullRequest
0 голосов
/ 21 января 2019

Я пытаюсь добавить подпредставление для просмотра и определения ограничений автоматического размещения, включая соотношение сторон. Но соотношение сторон, которое я вижу во время выполнения, не является тем, что я определил в ограничениях. Что я делаю неправильно? Как видно из кода, высота фонового представления должна составлять 0,5 от ширины фонового представления, но здесь это не так на скриншоте. Вот мой код:

class ViewController: UIViewController {

private var backgroundView:UIView?

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    view.backgroundColor = UIColor.orange

    backgroundView = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 100))
    backgroundView?.backgroundColor = UIColor.black.withAlphaComponent(1.0)
    backgroundView?.layer.borderColor = UIColor.white.cgColor
    backgroundView?.layer.borderWidth = 1.5
    backgroundView?.layer.cornerRadius = 4
    backgroundView?.clipsToBounds = true
    backgroundView?.translatesAutoresizingMaskIntoConstraints = false

    view.addSubview(backgroundView!)

    backgroundView?.widthAnchor.constraint(equalTo: view.widthAnchor, multiplier: 1.0).isActive = true
    backgroundView?.heightAnchor.constraint(equalTo: backgroundView!.widthAnchor, multiplier: 0.5).isActive = true
    backgroundView?.centerXAnchor.constraint(equalTo: view!.centerXAnchor, constant: 0).isActive = true
    backgroundView?.topAnchor.constraint(equalTo: view!.topAnchor, constant: 4).isActive = true
}


 }

Вот скриншот:

enter image description here

Ответы [ 2 ]

0 голосов
/ 21 января 2019

"высота вида фона должна составлять 0,5 от ширины фона"

Ваш размер скриншота 1334 x 750

Ваш backgroundView - включая границу - 1334 x 667

1334 * 0.5 == 667

Итак, вы получаете именно то, что просите.

0 голосов
/ 21 января 2019

Попробуйте изменить ограничение высоты, чтобы установить:

backgroundView?.heightAnchor.constraint(equalTo: view!.heightAnchor, multiplier: 0.5).isActive = true

NB: Вы получаете точный результат, который ищете. Он имеет высоту, равную половине его ширины. В скриншоте нет ничего плохого.

...