Nếu bạn đặt các đoạn mã sau vào một sân chơi bạn sẽ nhận được đầu ra mong muốn chính xác:
let view = UIView(frame: CGRectMake(0,0,200,100))
let layer = CAGradientLayer()
layer.frame = view.frame
layer.colors = [UIColor.greenColor().CGColor, UIColor.yellowColor().CGColor, UIColor.redColor().CGColor]
layer.locations = [0.0, 0.8, 1.0]
view.layer.addSublayer(layer)
XCPShowView("ident", view: view)
xuất ra:
Bạn chỉ cần xác định các màu sắc như một mảng của CGColors
và một mảng có cùng kích thước là NSNumber
s trong khoảng từ 0,0 đến 1,0.
Dont sử dụng startPoint
và endPoint
cho rằng - họ là để xác định từ nơi đến nơi gradient được hiển thị trong lớp - nó không có bất cứ điều gì để làm với phần trăm và màu sắc, vv
Phiên bản Swift3 gần đây hơn của mã:
let view = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 100))
let layer = CAGradientLayer()
layer.frame = view.frame
layer.colors = [UIColor.green.cgColor, UIColor.yellow.cgColor, UIColor.red.cgColor]
layer.locations = [0.0, 0.8, 1.0]
view.layer.addSublayer(layer)
PlaygroundPage.current.liveView = view
nơi bạn đang đấu tranh chính xác? Lớp này có hai thuộc tính 'colors' và' locations' sẽ được sử dụng cho bạn. Ngôn ngữ gì btw? – luk2302
"Ví dụ" của bạn không rõ ràng, giải thích chính xác 0% -50%, 51% -80% và 81% -100% có nghĩa là gì và thêm mã bạn đã sử dụng để ai đó có thể cho bạn thấy sự cố là trích dẫn tài liệu. –
Màu sắc trên lớp gradient nên như vậy và tỷ lệ phần trăm như vậy, theo mặc định tất cả ba màu sẽ phân phối đồng đều mà tôi muốn thay đổi. Tôi đang sử dụng Objective-C. Cảm ơn bạn. –