Tôi có một chế độ xem đơn giản (phía bên trái của hình ảnh) và tôi cần tạo một số loại lớp phủ (phía bên phải của bức ảnh) cho chế độ xem này. Lớp phủ này sẽ có một số độ mờ, vì vậy chế độ xem bên dưới nó vẫn có thể nhìn thấy một phần. Quan trọng nhất là lớp phủ này phải có một lỗ tròn ở giữa để nó không phủ lên tâm của chế độ xem (xem hình bên dưới).
Tôi có thể dễ dàng tạo một vòng kết nối như thế này:
int radius = 20; //whatever
CAShapeLayer *circle = [CAShapeLayer layer];
circle.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0,radius,radius) cornerRadius:radius].CGPath;
circle.position = CGPointMake(CGRectGetMidX(view.frame)-radius,
CGRectGetMidY(view.frame)-radius);
circle.fillColor = [UIColor clearColor].CGColor;
Và một lớp phủ hình chữ nhật "đầy đủ" như thế này:
CAShapeLayer *shadow = [CAShapeLayer layer];
shadow.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, view.bounds.size.width, view.bounds.size.height) cornerRadius:0].CGPath;
shadow.position = CGPointMake(0, 0);
shadow.fillColor = [UIColor grayColor].CGColor;
shadow.lineWidth = 0;
shadow.opacity = 0.5;
[view.layer addSublayer:shadow];
Nhưng tôi không biết làm cách nào để kết hợp hai lớp này để chúng tạo ra hiệu ứng mà tôi muốn. Bất kỳ ai? Tôi thực sự đã thử mọi thứ ... Cảm ơn rất nhiều vì đã giúp đỡ!
moveToPoint
, tạo với hình chữ nhật, sau đó thêm hình chữ nhật tròn. Kiểm tra tài liệu để biết các phương pháp được cung cấp bởi UIBezierPath
.