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

多个uiimageview触摸

移动多个 UIImageView 对象

如何在 UIScrollView 中捏缩放多个 UIImageView

拖动、缩放和旋转多个 UIImageview

将 UIImageView 添加到 UIButton