2014-11-14 63 views
0

当我绘制图形并将其添加到控制器视图时,图形显示正确。addSubLayer到UIView而不是根视图

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中,图形根本不会显示。

什么可能导致问题?

+0

有关如何调试此问题的任何一般建议,我们将赞赏解决问题的方式! – 2014-11-14 16:32:17

+1

一个想法是确认graphView(有或没有附加层)是可见的。也许将背景颜色设置为明亮的东西,并确保其可见。 – danh 2014-11-14 16:43:00

回答

1

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

class UIGradientView: UIView { 

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

谢谢!但在这种情况下,'graphView'也应包含图形作为其子,所以我不知道有什么区别 – 2014-11-14 17:25:58

+0

做一个UIView @MaximusS这允许您使用'addSubview'取代'addSublayer'管理层次。这也意味着您可以更轻松地进行调试并查看视图的位置,设置背景颜色并找出放置问题。 – InkGolem 2014-11-14 17:28:54