2012-05-07 16 views
5

के रूप में जोड़ा गया है, मेरे पास 5 कैलियर हैं प्रत्येक एक संपत्ति है। मान लें कि मैंने उनमें से 3 को सबव्यूव के रूप में जोड़ा है। यदि परतों में से एक परत पहले से ही जोड़ दी गई है तो मुझे chk करने में सक्षम होना चाहिए।जांचें कि क्या एक कैलियर पहले से ही एक sublayer

उत्तर

10

क्या आपने superlayer संपत्ति की कोशिश की है? यदि आपकी परत कहीं भी नहीं जोड़ा जाता है तो यह शून्य होना चाहिए।

+1

THX सुपर परत का परीक्षण के खिलाफ शून्य सिर्फ सही काम किया जाँच करने के लिए – abe

6
if (layer.superlayer == parentLayer) { 
    ... 
} else { 
    ... 
} 
4

view.layer.sublayers आप उप परतों की एक सरणी देता है, देखने के लिए अगर आपके परत जोड़ा गया है आप view.layer.sublayers.count की तरह कुछ कर सकते हैं और एक बार परत गिनती तक पहुँच जाता है कि तुम क्या न उम्मीद पूर्व के लिए और अधिक जोड़ें।

if (view.layer.sublayers.count < 3) { 
//add layer 
}else{ 
// do nothing because the layer has already been added. 
} 

आप जिस परत को ढूंढ रहे हैं उसे बेहतर ढंग से पहचानने के लिए आप सबलेयर सरणी में प्रत्येक परत की भी जांच कर सकते हैं। चूंकि वे गुण हैं, इसलिए आप यह देखने के लिए सरणी में प्रत्येक परत की तुलना करने में सक्षम होना चाहिए कि आप जिस परत को ढूंढ रहे हैं उसे जोड़ा गया है।

0
  • // CALayer शामिल उप-परत (shpapelayer/textlayer)

          if myShapeLayer.sublayers?.count>0 
              { 
               var arr:NSArray? = myShapeLayer.sublayers as NSArray 
               var i:Int=0 
               for i in 0..<arr!.count 
               { 
                var a: AnyObject = arr!.objectAtIndex(i) 
                if a.isKindOfClass(CAShapeLayer) || a.isKindOfClass(CATextLayer) 
                { 
                 if a.isKindOfClass(CAShapeLayer) 
                 { 
                  a = a as! CAShapeLayer 
    
                  if CGPathContainsPoint(a.path, nil, pointOfCircle, true) 
                  { 
                   NSLog("contains shape layer") 
    
                  } 
                  else 
                  { 
                   NSLog("not contains shape layer") 
    
                  } 
                 } 
                 if a.isKindOfClass(CATextLayer) 
                 { 
                  a = a as! CATextLayer 
                  var fr:CGRect = a.frame as CGRect 
                  if CGRectContainsPoint(fr, pointOfCircle) 
                  { 
                   NSLog("contains textlayer") 
    
                  } 
                  else 
                  { 
                   NSLog("not contains textlayer") 
    
                  } 
                 } 
    
                } 
               } 
              } 
    
संबंधित मुद्दे