UIImageView:将多个 UIViewContentMode 属性应用于一个 UIImageView?
Posted
技术标签:
【中文标题】UIImageView:将多个 UIViewContentMode 属性应用于一个 UIImageView?【英文标题】:UIImageView: applying multiple UIViewContentMode properties to one UIImageView? 【发布时间】:2017-08-08 20:33:02 【问题描述】:如何在保留 .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)”中的“视图”到底是什么吗?是我读到的神秘的“视图层次结构”吗?为什么我不能简单地初始化 UIImageView?为什么它必须绑定到我没有明确创建的称为“视图”的东西?目前只有一个 UIViewController 和一个 UIImageView。
【问题讨论】:
【参考方案1】:据我所知,您不能将内容模式设置为既适合又适合中心。但是,如果图像大小小于 imageView 的大小,中心将执行适合的方面。如果不是,请使用方面拟合。以下代码应该可以让您区分两者:
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 进行了相当全面的解释。希望对您有所帮助。
【讨论】:
以上是关于UIImageView:将多个 UIViewContentMode 属性应用于一个 UIImageView?的主要内容,如果未能解决你的问题,请参考以下文章
Playground,无法将同一个 UIImageView 设置为多个 UIView