2014-11-22 11 views
6

Tôi đang cố gắng đột quỵ đường dẫn trong CAShapeLayer bằng cách sử dụng các mẫu gạch ngang. Tôi đã tạo nhiều mẫu dấu gạch ngang sử dụng thuộc tính lineDashPattern. Nhưng tài sản này không đưa ra bất kỳ tùy chọn nào cho loại gạch ngang. Tôi muốn trở thành dấu gạch ngang của tôi là chấm tròn như trong hình dưới đây:Làm thế nào để vẽ mẫu chấm tròn cho một CAShapeLayer?

enter image description here

Tôi biết nó có thể đạt được bởi vì tôi đã thấy điều này trong nhiều ứng dụng. Nhưng tôi không thể tìm thấy bất kỳ cách nào để thực hiện điều này trong thư viện CAShapeLayer. Vì vậy, tôi muốn biết làm thế nào để có được những mô hình dấu chấm tròn chấm?

Trả lời

4

Tất cả bạn phải làm là để thiết lập kCALineCapRound cho lineCap tài sản của CAShapeLayer của bạn và sau đó thiết lập bạn lineDashPattern tới [0.0, x], nơi ví dụ x là 2 * chiều rộng đường kẻ của CAShapelayer nếu bạn muốn lề giữa các dấu chấm phải dài bằng đường kính chấm của bạn.

Các 0.0 đối với phân khúc sơn đầu tiên trong lineDashPattern là có gây kCALineCapRound vẽ một hình bán nguyệt ở phía trước và phía sau phân khúc sơn của bạn và bất kỳ phân đoạn sơn lớn hơn zero sẽ gây ra các dấu chấm để trở thành một Viên thuốc. enter image description here

+0

Thậm chí nếu tôi đặt 'x = 2 * linewitdh' nó mang lại cho tôi thuốc –

+1

X không có gì để làm với các hình thức của dấu chấm, nó xác định lề giữa các dấu chấm (đoạn không sơn). Zero trong ví dụ là những gì các dấu chấm hình thành, nếu phân đoạn sơn lớn hơn không nó mang lại cho bạn một viên thuốc. –

1

Thử bên dưới đoạn mã

shapeLayer.lineDashPattern = [NSArray arrayWithObjects:[NSNumber numberWithInt:1],[NSNumber numberWithInt:2 * stroke.width()], nil]; 
shapeLayer.lineCap = kCALineCapRound; 
3

thử // nhanh chóng

layer.strokeColor = UIColor.whiteColor().CGColor 
layer.fillColor = UIColor.clearColor().CGColor 
layer.lineWidth = 4 
layer.lineDashPattern = [0.01, layer.lineWidth * 2] 
layer.lineCap = kCALineCapRound 
Các vấn đề liên quan