Xin chào! Tôi muốn vẽ một góc tròn của UIView
. Chỉ một, những người khác không thể thay đổi.Cách vẽ một góc tròn đơn của UIView.
Trả lời
Bắt đầu từ iOS 3.2, bạn có thể sử dụng chức năng của UIBezierPath
s để tạo một đường tròn được làm tròn hoàn toàn (chỉ các góc bạn chỉ định được làm tròn). Sau đó bạn có thể sử dụng như là con đường của một CAShapeLayer
, và sử dụng như một mặt nạ cho lớp xem của bạn:
// Create the path (with only the top-left corner rounded)
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:imageView.bounds
byRoundingCorners:UIRectCornerTopLeft
cornerRadii:CGSizeMake(10.0, 10.0)];
// Create the shape layer and set its path
CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.frame = imageView.bounds;
maskLayer.path = maskPath.CGPath;
// Set the newly created shape layer as the mask for the image view's layer
imageView.layer.mask = maskLayer;
Và đó là nó - không rối tung xung quanh bằng tay xác định hình dạng trong lõi đồ họa, không có việc tạo mặt nạ hình ảnh trong Photoshop . Lớp thậm chí không cần vô hiệu. Áp dụng góc tròn hoặc thay đổi góc mới cũng đơn giản như xác định UIBezierPath
mới và sử dụng đường dẫn của lớp mặt nạ CGPath
. Tham số corners
của phương thức bezierPathWithRoundedRect:byRoundingCorners:cornerRadii:
là một mặt nạ bitmap và vì vậy, nhiều góc có thể được làm tròn bằng cách BẬT chúng với nhau.
LƯU Ý - Mặt nạ lớp sẽ không hiển thị khi được sử dụng kết hợp với phương thức kết xuất CALInInext. Nếu bạn cần sử dụng góc làm tròn thử này, hãy làm như sau: Just two rounded corners?.
tôi đã thực hiện một phương pháp câu trả lời StuDev của:
+ (CAShapeLayer *) roundedCornerOnImage: (UIImageView *)imageView onCorner: (UIRectCorner)rectCorner
{
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:imageView.bounds
byRoundingCorners:rectCorner
cornerRadii:CGSizeMake(10.0, 10.0)];
CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.frame = imageView.bounds;
maskLayer.path = maskPath.CGPath;
return maskLayer;
}
Ví dụ về việc sử dụng trên một ImageView trong một UITableViewCell:
if (indexPath.row == 0)
cell.imageView.layer.mask = [Helper roundedCornerOnImage:cell.imageView onCorner:UIRectCornerTopLeft];
else if (indexPath.row == self.arrayPeople.count - 1)
cell.imageView.layer.mask = [Helper roundedCornerOnImage:cell.imageView onCorner:UIRectCornerBottomLeft];
Nhờ StuDev cho một giải pháp tuyệt vời!
Tôi có thể thêm đường viền quanh đường dẫn này để tô sáng không .. ?? –
+ (CAShapeLayer *) roundedCornerOnImage: (UIImageView *)imageView onCorner: (UIRectCorner)rectCorner
{
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:imageView.bounds
byRoundingCorners:rectCorner
cornerRadii:CGSizeMake(10.0, 10.0)];
CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.frame = imageView.bounds;
maskLayer.path = maskPath.CGPath;
imageView.layer.mask=maskLayer
return maskLayer;
}
if (indexPath.row == 0)
[Helper roundedCornerOnImage:cell.imageView onCorner:UIRectCornerTopLeft];
else if (indexPath.row == self.arrayPeople.count - 1)
[Helper roundedCornerOnImage:cell.imageView onCorner:UIRectCornerBottomLeft];
Câu trả lời cập nhật ở trên, bạn không cần phải trả lại và quản lý điều đó. Nó có thể được thực hiện trong hàm đó.
Tôi đã thực hiện một chức năng cho làm cho bán kính Tuỳ chỉnh góc sau khi làm một số nhỏ R & D như sau:
+(void)setConerRadiusForTopLeft:(BOOL)isForTopLeft ForTopRight:(BOOL)isForTopRight ForBottomLeft:(BOOL)isForBottomLeft ForBottomRight:(BOOL)isForBottomRight withCornerRadius:(float)cornerRadius forView:(UIView *)view
{
UIRectCorner corners = (isForTopLeft ? UIRectCornerTopLeft : 0) |
(isForTopRight ? UIRectCornerTopRight : 0) |
(isForBottomLeft ? UIRectCornerBottomLeft : 0) |
(isForBottomRight ? UIRectCornerBottomRight : 0);
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:view.bounds
byRoundingCorners:corners
cornerRadii:CGSizeMake(cornerRadius, cornerRadius)];
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
maskLayer.frame = view.bounds;
maskLayer.path = maskPath.CGPath;
view.layer.mask = maskLayer;
}
- 1. Góc tròn trên UIView
- 2. Góc tròn UIView hoặc UIImageView
- 3. UIView layer góc tròn và -drawRect:
- 4. Vẽ một UIView tròn với độ dốc và thả bóng
- 5. Thực hiện các góc cụ thể của UIView tròn
- 6. Vẽ hình vuông với các góc tròn
- 7. Cách tốt nhất và nhanh nhất để làm tròn các góc của UIView?
- 8. Cách tạo hình tròn UIView
- 9. Làm thế nào để vẽ một hình tam giác với góc tròn sử dụng quartz2d/CoreGraphics
- 10. Vẽ một phần của hình tròn
- 11. NSImageView góc tròn + nét ngang
- 12. Góc tròn chỉ trên một số góc trong css
- 13. Màu nền NSAttributedString và các góc bo tròn
- 14. Lỗi góc tròn Java
- 15. Làm cách nào để tạo góc nghiêng trên UIView?
- 16. Tạo nút có góc tròn trong android
- 17. CSS Tròn góc Divs
- 18. Làm thế nào để vẽ một hình chữ nhật tròn (hình chữ nhật với các góc tròn) với OpenCV?
- 19. SVG tròn góc
- 20. Cách sử dụng nhãn góc tròn trong iphone, Góc tròn UILabel
- 21. cắt góc tròn
- 22. CSS Góc tròn
- 23. Hiệu quả khi vẽ một ImageView với các góc bo tròn
- 24. Raphael-JS: Xoay với một góc tròn
- 25. cách đặt góc tròn cho UITextView?
- 26. Bàn góc tròn với LESS
- 27. UISegmentedControl không có góc tròn?
- 28. UIToolbar với các góc tròn
- 29. Tròn góc TextBox trong WPF
- 30. Góc tròn lỏng với jQuery
Mã của bạn đã thực sự đã cứu tôi. Nếu tôi có cơ hội, tôi sẽ đánh dấu câu trả lời này đúng. – itsaboutcode
Một lưu ý: nếu bạn thay đổi kích thước của chế độ xem, bạn sẽ phải tạo lại mặt nạ. Vì vậy, phân lớp UIView và ghi đè lên khung và giới hạn. – Krumelur
Tôi cũng có thể thêm đường viền quanh đường dẫn này để tô sáng không .. ?? –