Swift - UIView 包含 UIImageView 包含图像

Posted

技术标签:

【中文标题】Swift - UIView 包含 UIImageView 包含图像【英文标题】:Swift - UIView Containing UIImageView Containing Image 【发布时间】:2017-12-11 19:02:59 【问题描述】:

我正在尝试创建一个具有边框颜色/宽度的 UIView,添加一个具有不同边框颜色/宽度的 UIImageView 子视图,并且其中还有一个图像。所以基本上我想要的是一个白色边框后跟蓝色边框的图像。

现在我只看到蓝色边框出现。这是我正在做的事情:

(闭包内部,其中outerView是UIView)

        outerView.frame = cell.frame
        outerView.layer.borderColor = UIColor.blue.cgColor
        outerView.layer.borderWidth = 3.0
        outerView.layer.cornerRadius = outerView.frame.height / 2
        outerView.clipsToBounds = true
        outerView.backgroundColor = UIColor.clear

        let imageView = UIImageView(frame: outerView.frame)
        imageView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
        self?.controller?.setupImageView(imageView, cell: cell)
        outerView.addSubview(imageView)

(setupImageView:)

let frame = imageView.frame
imageView.image = imageConstants.imageToDisplay
imageView.clipsToBounds = true
imageView.layer.cornerRadius = frame.height / 2
imageView.layer.borderWidth = 3.0
imageView.layer.borderColor = UIColor.white.cgColor

如果我改变它,所以闭包只返回一个 UIImageView 类型(outerView 是一个 UIImageView)并将它直接传递给 setupImageView(imageView:cell:) 函数,我可以看到图像和白色边框。

我不确定要让两者都显示我缺少什么。

提前谢谢你!

【问题讨论】:

【参考方案1】:

outerView 和您的 imageView 具有相同的框架(这意味着它们具有相同的高度和相同的宽度),imageView 的边框位于 outherView 的边框下方。

试试这个:

let outerFrame = outerView.frame
let frame = CGRect(x: outerFrame.origin.x - 3, y: outerFrame.origin.y - 3, width: outerFrame.size.width -6, height: outerFrame.size.height -6)

3 因为borderWidth = 3.0

和:

let imageView = UIImageView(frame: frame)

【讨论】:

以上是关于Swift - UIView 包含 UIImageView 包含图像的主要内容,如果未能解决你的问题,请参考以下文章

在屏幕外渲染 uiview 以捕获为 uiimage

如何将任何UIView渲染为UIImage [关闭]

iOS - Swift - UIImage 上的可点击区域

如何将 UIView 的边框放在 UIImage 后面?

Swift 3 ios:当图像出现时,UILabel 需要出现在 UIImage 之上

Swift UIImage 不能用重力动画