2010-05-17 14 views
20

मैं पदानुक्रम में एक अद्वितीय कैलियर खोजने के लिए एक सामान्य तरीका ढूंढ रहा हूं, यह याद रखने के बिना कि परत पदानुक्रम में कहां है (और सब्लेयर: और सुपरलेयर: विधियों का उपयोग करें)।आईफोन में टैगिंग कैलियर

मुझे पता है कि यह UIViews के साथ संभव है (जो फ़्लिपिंग दृश्यों को आसान बनाता है) लेकिन क्या यह कैलियर के लिए संभव है?

आपकी मदद

Peyman

उत्तर

23

माफी माँगता हूँ के लिए अग्रिम धन्यवाद। मैं एक टुकड़ा था। कैलियर एक कुंजी-मूल्य कोडिंग अनुपालन कंटेनर है इसलिए मैं किसी भी उदाहरण में मनमाना मूल्य (टैग सहित) बना सकता हूं।

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

धन्यवाद

53

तुम भी CALayer के नाम संपत्ति का उपयोग कर सकते हैं: उदाहरण के लिए एक टैग हम क्या बनाने के लिए।

[layer setName:@"myKey"]; 

यह देखने के लिए,

- (CALayer *)myLayer { 

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

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

    return nil; 
} 
+1

हम्म कर सकते हैं पाने के लिए कर सकते हैं। सभी को चलने के अलावा नाम से परत प्राप्त करने का कोई तरीका नहीं है? आह अच्छा, यह कुछ भी नहीं है! –

+0

मुझे लगता है कि मुझे लगता है कि एक संपत्ति का उपयोग कर सकते हैं। हालांकि इसे देखने के लिए एक तरीका होना अच्छा लगेगा। –

0

स्विफ्ट में आप इस

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

तब परतों आप इस

for item in self.layer.sublayers! { 
    if item.name == "\(index)" { 
     item.removeFromSuperlayer() 
     item.removeAllAnimations() 
    } 
} 
संबंधित मुद्दे