Estoy creando un interruptor de activación/desactivación personalizado para el iPhone (similar al interruptor estándar) y estoy en el punto donde estoy configurando la máscara del control deslizante, pero llamando al [[myView layer] setMask:maskLayer]
establece la posición de la capa de máscara relativa a la capa que enmascara, no relativa a la capa de contenedor de la capa de máscara. Para este escenario en particular, la posición de la capa de máscara debe establecerse en relación con su capa contenedora, ya que el control deslizante se moverá debajo de la máscara y la máscara permanecerá estacionaria.Enmascaramiento de un CALayer - iPhone
Sin tener que animar la máscara Y el componente deslizante de alternar para lograr el efecto deseado, ¿alguien sabe cómo hacerlo funcionar? Aquí es lo que tengo hasta ahora:
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
CGMutablePathRef path = CGPathCreateMutable();
CGPathAddEllipseInRect(path, nil, CGRectMake(0, 0, 13, 13));
CGPathAddEllipseInRect(path, nil, CGRectMake(30, 0, 13, 13));
CGPathAddRect(path, nil, CGRectMake(6, 0, 32, 13));
[maskLayer setPath:path];
[maskLayer setFillColor:[[UIColor greenColor] CGColor]];
[[self layer] addSublayer:maskLayer];
[maskLayer setPosition:CGPointMake(2, 2)];
[self addSubview:toggleView];
[[toggleView layer] setMask:maskLayer];
Si este código no usa ARC, 'path' está goteando. – titaniumdecoy