14w*_*wml 3 calayer uiview ios swift
我正在尝试"resizeLayer"通过对UIView selectedShape进行子分层来将其添加到UIView中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)
Run Code Online (Sandbox Code Playgroud)
但是当我运行代码时,我根本看不到该层
我什至尝试"resizeLayer"通过UIView来查看图像"selectedShape"
let resizeFrame = UIImageView(image: UIImage(named: "resizeLayer"))
resizeFrame.frame = selectedShape.frame
resizeFrame.contentMode = UIViewContentMode.ScaleAspectFill
selectedShape.addSubview(resizeFrame)
Run Code Online (Sandbox Code Playgroud)
但是,仍然"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
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激!
如果相关,这就是我所做的 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
Run Code Online (Sandbox Code Playgroud)
蓝色正方形是selectedShape。如您所见,该图层未显示。
并不是他问题的真正答案,但相关,如果有人以前在这里写过这个,会节省我的时间。因此,希望能够帮助某人并编制更完整的问题列表及其解决方案:
addSublayer 调用需要从主线程进行......
有趣的是,如果您从工作线程执行此操作,它仍然会显示在视图层次结构调试中,并包含您设置的内容,但不会显示......
您正在使用整个框架selectedShape。您应该只使用widthand和height因为x并且y应该为零。图像被添加到selectedShape该点,因此该点(0,0)位于selectedShape视图的左上方。
resizeFrame.frame = CGRect(origin: CGPointZero, size: selectedShape.frame.size)
Run Code Online (Sandbox Code Playgroud)
我承认,这让我难过的时间比原本应该的更长。
| 归档时间: |
|
| 查看次数: |
5364 次 |
| 最近记录: |