2012-05-07 17 views

Respuesta

10

¿Has probado la propiedad superlayer? Debería ser nulo si su capa no se agrega en ningún lado.

+1

THX probó la capa súper contra nil trabajó justo – abe

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

view.layer.sublayers le ofrece una gran variedad de las capas sub, para ver si su capa se añadió que puede hacer algo como view.layer.sublayers.count y una vez que el recuento capa alcanza lo que espera no te agregar más por ej.

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

También puede examinar cada capa en la matriz de subcapa para identificar mejor la capa que está buscando. Como son propiedades, debería poder hacer una comparación con cada una de las capas de la matriz para ver si se ha agregado la capa que está buscando.

0
  • // comprobar CALayer Contiene subcapa (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") 
    
                  } 
                 } 
    
                } 
               } 
              } 
    
Cuestiones relacionadas