2012-05-07 17 views

cevap

10

superlayer özelliğini mi denediniz? Katman herhangi bir yere eklenmezse, sıfır olmalıdır.

+1

thx süper tabakasını test İçeren kontrol etmek – abe

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

view.layer.sublayers sizin katman katman sayısı dont beklediğiniz ulaştığında size view.layer.sublayers.count gibi bir şey yapabiliriz ve eklenip eklenmediğini görmek için, size alt tabakaların bir dizi verir ex için daha fazla ekle

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

Ayrıca daha iyi Aradığınız katmanı tanımlamak için alt katmanı dizideki her katmanı inceleyebilirsiniz. Özellikleri olduklarından, aradığınız katmanın eklenip eklenmediğini görmek için dizideki katmanların her birine bir karşılaştırma yapabilmeniz gerekir.

0
  • // CALayer nil sadece doğru çalıştı karşı Altkatmanı (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") 
    
                  } 
                 } 
    
                } 
               } 
              } 
    
İlgili konular