我正在研究CAShapeLayer
。並嘗試繪製非線性路徑。我想將幀設置爲CAShapeLayer
。因此,我可以使用CGPathGetPathBoundingBox
方法從CGPathRef
獲取幀。CAShapeLayer的框架和邊界
這裏是代碼:
CGMutablePathRef path = CGPathCreateMutable();
CGPathAddArc(path, NULL, rect.size.width/2, rect.size.height/2, 100, (0), (M_PI_2), NO);
CGPathAddArc(path, NULL, rect.size.width/2, rect.size.height/2, 100-50, (M_PI_2), (0), YES);
CGPathCloseSubpath(path);
CAShapeLayer* arcLayer = [[CAShapeLayer alloc]init];
arcLayer.path = path;
arcLayer.frame = CGPathGetPathBoundingBox(path);
arcLayer.bounds = CGPathGetPathBoundingBox(path);
[self.layer addSublayer:arcLayer]; `
請參考我的代碼仔細。我已設置相同的框架和範圍,以CAShapeLayer.My問題是,如果我沒有設置界限(同幀),那麼它不會顯示我的內容,也不會在框架內顯示我的內容。爲什麼?請幫助我。謝謝你。
所以,在句子中:不要設置'frame',只是'bounds',並且設置'position'? –
是的。雖然,我認爲500分的問題需要稍微更詳細的回答。 –
通常對於圖層,我認爲您可以通過設置_bounds_ + _position_而不是_frame_來獲得最佳結果。但對於CAShapeLayer,我不認爲邊界是重要的,除非你想添加翻譯的內容。但是這並不能解釋爲什麼路徑不被繪製嗎? – nielsbot