Swift 在UIImageView中的图像后面插入CAShapeLayer

Swift 在UIImageView中的图像后面插入CAShapeLayer,swift,swift3,uiimageview,uiimage,cashapelayer,Swift,Swift3,Uiimageview,Uiimage,Cashapelayer,正如标题所说。我有一个UIImageView,我正在视图中插入CAShapeLayers。问题是我不知道如何将它们插入UIImageView的图像后面。任何建议都将不胜感激,谢谢。您可以尝试进行一些层重新排序,但UIImageView自身的内部代码可能会阻止您。我的建议是创建一个容器视图并在其中添加子层,然后将图像视图添加为子视图(这实际上也是将其添加为子层)。只要图像具有透明度并且UIImageView不是不透明的,它就可以工作。 这个代码在操场上对我有效: let container = U

正如标题所说。我有一个UIImageView,我正在视图中插入CAShapeLayers。问题是我不知道如何将它们插入UIImageView的图像后面。任何建议都将不胜感激,谢谢。

您可以尝试进行一些层重新排序,但UIImageView自身的内部代码可能会阻止您。我的建议是创建一个容器视图并在其中添加子层,然后将图像视图添加为子视图(这实际上也是将其添加为子层)。只要图像具有透明度并且UIImageView不是不透明的,它就可以工作。 这个代码在操场上对我有效:

let container = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
let imageView = UIImageView(frame: container.bounds)
imageView.image = UIImage(named: "duck.png")
imageView.isOpaque = false

let shape = CAShapeLayer()
shape.path = UIBezierPath(roundedRect: container.bounds, cornerRadius: 2).cgPath
shape.strokeColor = UIColor.black.cgColor
shape.lineWidth = 10
shape.fillColor = UIColor.blue.cgColor
shape.borderColor = UIColor.black.cgColor
container.layer.addSublayer(shape)
container.addSubview(imageView)

祝你好运

不要弄乱UIImageView的图层。按照@LeoDabus的建议,将其包装在UIView上,然后将图层添加到视图中。你们都没有回答我的问题。我知道我可以在容器下面/作为容器创建第二个视图,但出于许多原因,我希望避免使用这种解决方案。此外,我已经将层插入到UIImageView中,一切都运行良好,测试良好。唯一的问题是我不知道如何在图片下方插入内容。如果这是不可能的,那么说“那是不可能的”,如果你不确定,那么你不应该回答。但是请不要浪费我的时间,我问的这个问题是有原因的。@LeoDabus所以你不知道答案?谢谢你的努力,祝你有愉快的一天。@LeoDabus我不知道为什么我问。另外,我不认为吹嘘回答的问题对于stackoverflow这样的网站是非常合适的,特别是如果你像你所说的那样参与其中,这不是reddit。仔细阅读答案。它将帮助您解决这个问题。所以您的意思是UIImageView可能不允许图像下方存在任何内容,我必须创建一个单独的视图容器。那太糟糕了。谢谢你抽出时间来。