Sto creando un interruttore di attivazione/disattivazione personalizzato per iPhone (simile all'interruttore standard) e sono nel punto in cui sto impostando la maschera del dispositivo di scorrimento, ma chiamando [[myView layer] setMask:maskLayer]
imposta la posizione del livello maschera rispetto al livello mascherato, non relativo al livello contenitore del livello maschera. Per questo particolare scenario, la posizione del livello maschera deve essere impostata rispetto al suo livello di contenimento poiché il cursore di attivazione si sposterà al di sotto della maschera e la maschera dovrebbe rimanere ferma.Masking a CALayer - iPhone
Senza dover animare la maschera E il componente di attivazione/disattivazione del cursore per ottenere l'effetto desiderato, qualcuno sa come farlo funzionare? Ecco quello che ho finora:
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];
Se questo codice non utilizza ARC, 'path' perde. – titaniumdecoy