2014-11-14 64 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