添加后子层不显示
Sublayer is not showing up after add it
我正在尝试将图像 "resizeLayer"
添加到我的 UIView selectedShape
上,方法是在 selectedShape
上进行子分层
let sublayer = CALayer()
sublayer.bounds = selectedShape.bounds //even when inserted this line, sublayer still doesn't show up
sublayer.frame = selectedShape.frame
sublayer.contents = UIImage(named: "resizeLayer")
selectedShape?.layer.addSublayer(sublayer)
但是当我 运行 我的代码时,我根本看不到图层
我什至尝试在 UIView "selectedShape"
上查看图像 "resizeLayer"
let resizeFrame = UIImageView(image: UIImage(named: "resizeLayer"))
resizeFrame.frame = selectedShape.frame
resizeFrame.contentMode = UIViewContentMode.ScaleAspectFill
selectedShape.addSubview(resizeFrame)
但是,"resizeLayer"
仍然没有出现!
它只有在我将 "resizeLayer"
添加到整体视图时才会显示:
let resizeFrame = UIImageView(image: UIImage(named: "resizeLayer"))
resizeFrame.frame = selectedShape.frame
resizeFrame.contentMode = UIViewContentMode.ScaleAspectFill
selectedShape.addSubview(resizeFrame)
self.view.insertSubview(resizeFrame, aboveSubview: selectedShape) //add this line
如有任何帮助,我们将不胜感激!
如果相关,这就是我制作的方式 selectedShape
selectedShape = UIView(frame: CGRect(x: 0, y: 0, width: 60, height: 60))
selectedShape.layer.cornerRadius = 10
selectedShape.backgroundColor = UIColor.blueColor()
canvas.addSubview(selectedShape) //canvas is the view I'm adding selectedShape to
This is the image "resizeLayer"
that I'm trying to add
蓝色方块是selectedShape
。 As you can see the layer is not showing up.
我认为你应该将 selectedView 发回:
canvas.sendSubviewToBack(selectedShape)
您正在为 selectedShape
使用整个框架。您应该只使用 width
和 height
,因为 x
和 y
应该是 0。图像已添加到 selectedShape
,因此点 (0,0)
位于 selectedShape
视图的左上角。
resizeFrame.frame = CGRect(origin: CGPointZero, size: selectedShape.frame.size)
我承认这让我难过的时间比应该的要长。
不是他的问题的真正答案,但相关并且如果有人以前在这里写过这个会节省我的时间。所以希望能帮助某人并编制更完整的问题列表及其解决方案:
addSublayer 调用需要从主线程进行...
有趣的是,如果您从工作线程执行此操作,它仍然会显示在视图层次结构调试中以及您设置的内容,但不会显示...
我正在尝试将图像 "resizeLayer"
添加到我的 UIView selectedShape
上,方法是在 selectedShape
let sublayer = CALayer()
sublayer.bounds = selectedShape.bounds //even when inserted this line, sublayer still doesn't show up
sublayer.frame = selectedShape.frame
sublayer.contents = UIImage(named: "resizeLayer")
selectedShape?.layer.addSublayer(sublayer)
但是当我 运行 我的代码时,我根本看不到图层
我什至尝试在 UIView "selectedShape"
"resizeLayer"
let resizeFrame = UIImageView(image: UIImage(named: "resizeLayer"))
resizeFrame.frame = selectedShape.frame
resizeFrame.contentMode = UIViewContentMode.ScaleAspectFill
selectedShape.addSubview(resizeFrame)
但是,"resizeLayer"
仍然没有出现!
它只有在我将 "resizeLayer"
添加到整体视图时才会显示:
let resizeFrame = UIImageView(image: UIImage(named: "resizeLayer"))
resizeFrame.frame = selectedShape.frame
resizeFrame.contentMode = UIViewContentMode.ScaleAspectFill
selectedShape.addSubview(resizeFrame)
self.view.insertSubview(resizeFrame, aboveSubview: selectedShape) //add this line
如有任何帮助,我们将不胜感激!
如果相关,这就是我制作的方式 selectedShape
selectedShape = UIView(frame: CGRect(x: 0, y: 0, width: 60, height: 60))
selectedShape.layer.cornerRadius = 10
selectedShape.backgroundColor = UIColor.blueColor()
canvas.addSubview(selectedShape) //canvas is the view I'm adding selectedShape to
This is the image "resizeLayer"
that I'm trying to add
蓝色方块是selectedShape
。 As you can see the layer is not showing up.
我认为你应该将 selectedView 发回:
canvas.sendSubviewToBack(selectedShape)
您正在为 selectedShape
使用整个框架。您应该只使用 width
和 height
,因为 x
和 y
应该是 0。图像已添加到 selectedShape
,因此点 (0,0)
位于 selectedShape
视图的左上角。
resizeFrame.frame = CGRect(origin: CGPointZero, size: selectedShape.frame.size)
我承认这让我难过的时间比应该的要长。
不是他的问题的真正答案,但相关并且如果有人以前在这里写过这个会节省我的时间。所以希望能帮助某人并编制更完整的问题列表及其解决方案:
addSublayer 调用需要从主线程进行...
有趣的是,如果您从工作线程执行此操作,它仍然会显示在视图层次结构调试中以及您设置的内容,但不会显示...