Tôi đang tạo công tắc bật/tắt tùy chỉnh cho iPhone (tương tự như công tắc chuẩn) và tôi đang ở vị trí mà tôi đang đặt mặt nạ của thanh trượt, nhưng gọi [[myView layer] setMask:maskLayer]
thiết lập vị trí của lớp mặt nạ liên quan đến lớp mà nó là mặt nạ, không liên quan đến tầng chứa của lớp mặt nạ. Đối với kịch bản cụ thể này, vị trí của lớp mặt nạ cần phải được đặt tương đối so với lớp chứa vì thanh trượt chuyển đổi sẽ di chuyển bên dưới mặt nạ và mặt nạ sẽ giữ nguyên.Masking a CALayer - iPhone
Không cần phải làm sống động mặt nạ và thanh trượt chuyển đổi thành phần để đạt được hiệu quả mong muốn, bất cứ ai biết cách thực hiện công việc này? Đây là những gì tôi đã có cho đến nay:
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];
Nếu mã này không sử dụng ARC, 'đường dẫn' bị rò rỉ. – titaniumdecoy