gpt4 book ai didi

ios - 自动布局未正确设置 ImageView 框架

转载 作者:行者123 更新时间:2023-11-30 13:07:22 25 4
gpt4 key购买 nike

只需将此图像放入 ImageView 中并设置为宽高比即可。

enter image description here

override func viewDidLoad() {
super.viewDidLoad()
let image = UIImage(named: "1-landscape")
let imageView = UIImageView(image: image)
imageView.translatesAutoresizingMaskIntoConstraints = false
imageView.backgroundColor = UIColor.blackColor()
imageView.contentMode = .ScaleAspectFit
view.addSubview(imageView)
var collector = [NSLayoutConstraint]()
collector.appendContentsOf(NSLayoutConstraint.constraintsWithVisualFormat("H:|-0-[imageView]-0-|", options: [], metrics: nil, views: ["imageView": imageView]))
collector.append(NSLayoutConstraint(item: imageView, attribute: .CenterY, relatedBy: .Equal, toItem: view, attribute: .CenterY, multiplier: 1, constant: 0))
view.addConstraints(collector)
}

运行时, View 的高度比图像的高度大 50%。为什么???

enter image description here

如果我们用老派的方式来表达我们的观点,是没有问题的。我是否忘记了自动布局或其他步骤?

    override func viewDidLoad() {
super.viewDidLoad()
let image = UIImage(named: "1-landscape.png")!
let scaleFactor = image.size.height / image.size.width
let width = view.frame.size.width
let height = width * scaleFactor
let size = CGSize(width: width, height: height)
let imageView = UIImageView(image: image)
// imageView.translatesAutoresizingMaskIntoConstraints = false
imageView.backgroundColor = UIColor.blackColor()
imageView.contentMode = .ScaleAspectFit
imageView.frame.size = size
imageView.center = view.center
view.addSubview(imageView)
// var collector = [NSLayoutConstraint]()
// collector.appendContentsOf(NSLayoutConstraint.constraintsWithVisualFormat("H:|-0-[imageView]-0-|", options: [], metrics: nil, views: ["imageView": imageView]))
// collector.append(NSLayoutConstraint(item: imageView, attribute: .CenterY, relatedBy: .Equal, toItem: view, attribute: .CenterY, multiplier: 1, constant: 0))
// view.addConstraints(collector)
}

最佳答案

用锁定纵横比的约束来强制高度,就成功了。

override func viewDidLoad() {
super.viewDidLoad()
let image = UIImage(named: "1-landscape.png")!
let imageView = UIImageView(image: image)
imageView.translatesAutoresizingMaskIntoConstraints = false
imageView.backgroundColor = UIColor.blackColor()
imageView.contentMode = .ScaleAspectFit
view.addSubview(imageView)
var collector = [NSLayoutConstraint]()
collector.appendContentsOf(NSLayoutConstraint.constraintsWithVisualFormat("H:|-0-[imageView]-0-|", options: [], metrics: nil, views: ["imageView": imageView]))
collector.append(NSLayoutConstraint(item: imageView, attribute: .Height, relatedBy: .Equal, toItem: imageView, attribute: .Width, multiplier: image.size.height / image.size.width, constant: 0))
collector.append(NSLayoutConstraint(item: imageView, attribute: .CenterY, relatedBy: .Equal, toItem: view, attribute: .CenterY, multiplier: 1, constant: 0))
view.addConstraints(collector)
}

关于ios - 自动布局未正确设置 ImageView 框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39180687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com