只需将此图像放置在图像视图中并设置为宽高比。
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)
}
在运行时,视图的高度比图像的高度大50%。为什么 ???
如果我们使用传统的观点发表意见,那就没有问题。我会忘记自动布局之类的步骤吗?
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)
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句