设置UIImageView的宽度,高度,纵横比和约束X,Y

时间:2019-05-17 19:21:58

标签: swift uiimageview constraints

我已经在视图控制器中设置了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 :(得分:0)

设置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