Я создаю собственный переключатель вкл / выкл для iPhone (аналогично стандартному переключателю), и я нахожусь в точке, где я устанавливаю маску ползунка, но вызов [[myView layer] setMask:maskLayer]
устанавливает положение слоя маски относительно слоя, который он маскирует, а не относительно уровня контейнера слоя маски. Для этого конкретного сценария положение маскирующего слоя должно быть установлено относительно его содержащего слоя, потому что ползунок переключения будет перемещаться под маской, и маска должна оставаться неподвижной.
Без анимации маски и компонента ползунка переключения для достижения желаемого эффекта кто-нибудь знает, как заставить это работать? Вот что у меня так далеко:
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];