我有一個UIView,我在drawRect方法中繪製東西。我想覆蓋CALayer通過UIView CALayer(self.layer),這將繪製drawRect中繪製的東西的一個子集。基本上,我在drawRect中繪製了很多圈子,我想在疊加層上突出顯示它們。我從UIView屬性的模型對象中獲取圓的座標。如何在UIView的實現文件中實現drawLayer:InContext?
我的第一次嘗試是一個子層s
添加到UIView的層,其代表設置爲的UIView並在需要時調用其setNeedsDisplay
方法,但drawLayer:InContext
由兩個層(s
和self.layer)調用。這不起作用:
-(void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx {
if (layer == s) {
// draw stuffs for s
}
else if (layer==self.layer) {
// do nothing
}
}
導致一個黑色的UIView。我想從一個可以訪問我的數據模型的地方繪製s
,以及其他對繪圖有用的變量(行的寬度..)。我有點解決了這個問題,將s
的圖形移動到了一個單獨的對象上,但是這迫使我也在這個對象中設置模型的指針,並且複製其他參數。
所以我的問題是:在UIView使用drawRect繪製其內容,如何添加一個委託的子層是相同的UIView?