如何在保留.scaleAspectFill的同时将UIViewContentMode.center添加到此UIImageView?
func insertImage() {
let theImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: 300))
theImageView.image = #imageLiteral(resourceName: "coolimage")
theImageView.contentMode = UIViewContentMode.scaleAspectFill
view.addSubview(theImageView)
}此外,有没有人可以向我解释一下最后一行"view.addSubview(theImageView)“中的"view”到底是什么?是我读到的神秘的“视图层次结构”吗?为什么我不能简单地初始化UIImageView?为什么它必须绑定到我没有显式创建的名为"view“的东西上?到目前为止,只有一个UIViewController和一个UIImageView。
发布于 2017-08-09 04:55:39
据我所知,你不能同时将内容模式设置为aspect fit和center。但是,如果图像大小小于imageView的大小,中心将执行aspect fit所做的操作。如果没有,请使用aspect fit。下面的代码应该允许您区分这两者:
if (theImageView.bounds.size.width > UIImage(named: "coolimage")?.size.width && theImageView.bounds.size.height > UIImage(named: "coolimage")?.size.height) {
theImageView.contentMode = .aspectFit
} else {
theImageView.contentMode = .center
}至于你问题的第二部分,我会推荐你参考this thread,它对UIViewController和UIView有一个相当全面的解释。希望这能有所帮助。
https://stackoverflow.com/questions/45577545
复制相似问题