【问题标题】:addSubLayer to UIView instead of root viewaddSubLayer 到 UIView 而不是根视图
【发布时间】:2014-11-14 16:31:47
【问题描述】:

当我绘制一个图形并将其添加到控制器的视图中时,图形会正确显示。

CAShapeLayer *shapeLayer = [CAShapeLayer layer];
self.currentGraph = shapeLayer;
shapeLayer.strokeColor = [UIColor blackColor].CGColor;
shapeLayer.fillColor = [UIColor grayColor].CGColor;
shapeLayer.lineWidth = 1.0;
//[self.graphView.layer addSublayer:shapeLayer]; // Doesn't work!
[self.view.layer addSublayer:shapeLayer]; // Works!

如果我将它添加到应该包含图形的 UIView 中,则根本不会显示图形。

什么可能导致问题?

【问题讨论】:

  • 任何有关如何调试此问题的一般建议将不亚于解决问题的方法!
  • 一个想法是确认graphView(有或没有附加层)是可见的。也许将其背景颜色设置为明亮的颜色并确保其可见。

标签: ios uiview calayer


【解决方案1】:

我建议创建一个自定义UIView 子类来包含您的图层。这样您就可以获得作为 UIView 的所有好处,但可以灵活地控制层的类型。

class UIGradientView: UIView {

    override class func layerClass() -> AnyClass {
        return CAShapeLayer.self
    }
}

【讨论】:

  • 谢谢!但在这种情况下,graphView 也是一个 UIView,它应该包含图形作为它的子层,所以我不知道有什么区别
  • @MaximusS 这允许您使用addSubview 而不是addSublayer 来管理层次结构。这也意味着您可以更轻松地对其进行调试并查看视图在哪里,设置背景颜色,并找出放置问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多