2012-05-07 16 views

答えて

10

superlayerプロパティを試しましたか?レイヤーがどこにも追加されていない場合はゼロにする必要があります。

+1

はTHXがnilに対するスーパー層はちょうど働いていたテストが含ま – abe

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

view.layer.sublayersは、あなたの層は層数は、あなたがいけない期待に達すると、あなたがview.layer.sublayers.countような何かをしてすることができます追加されましたかどうかを確認するために、あなたのサブレイヤーの配列を与えますexのためにもっと追加してください。

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

また、サブレイヤアレイの各レイヤを調べて、探しているレイヤをより正確に識別することもできます。それらはプロパティなので、配列内の各レイヤーと比較して、探しているレイヤーが追加されているかどうかを確認することができます。 CALayerのをチェックする

0
  • //はサブレイヤ(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") 
    
                  } 
                 } 
    
                } 
               } 
              } 
    
関連する問題