2010-05-17 22 views
20

我正在尋找一種能夠在層次結構中搜索獨特CALayer的通用方法,而無需記住圖層在層次結構中的位置(並使用子圖層和superlayer:方法)。我知道這是可能的UIViews(這使翻轉視圖容易),但它可能爲CALayer?在iPhone中標記CALayers

預先感謝您的幫助

Peyman的

回答

23

道歉。我是一個笨蛋。 CALayer是一個鍵值編碼兼容容器,因此我可以在任何情況下創建任意值(包括標籤)。要創建實例的標籤,我們做的:

[rootLayer setValue:[NSNumber numberWithInt:101] forKey:@"PFtag"]; 

謝謝

53

您還可以使用的CALayer的name屬性。

[layer setName:@"myKey"]; 

來關注一下吧,

- (CALayer *)myLayer { 

    for (CALayer *layer in [superLayerOfMyLayer sublayers]) { 

      if ([[layer name] isEqualToString:LabelLayerName]) { 
       return layer; 
      } 
    } 

    return nil; 
} 
+1

嗯層。沒有辦法得到一個名稱層以外的所有行走?啊,好吧,這比沒有好! – 2012-10-09 20:10:57

+0

可以使用屬性來避免不必要的設想。有一種方法可以查看它但很高興。 – 2014-09-01 12:02:28

0

在斯威夫特,你可以做到這一點

let layer = CAShapeLayer() 
layer.name = "\(index)" 

然後讓你可以做到這一點

for item in self.layer.sublayers! { 
    if item.name == "\(index)" { 
     item.removeFromSuperlayer() 
     item.removeAllAnimations() 
    } 
}