Tôi không biết làm thế nào để thiết lập gradient nền trên một nút (mà không làm cho nền gradient một hình ảnh). Điều này rất khác với Android.Đặt Background Gradient trên nút trong Swift
Dưới đây là một lớp học tôi phải xác định một kế hoạch dốc trả lại:
import UIKit
extension CAGradientLayer {
func backgroundGradientColor() -> CAGradientLayer {
let topColor = UIColor(red: (0/255.0), green: (153/255.0), blue:(51/255.0), alpha: 1)
let bottomColor = UIColor(red: (0/255.0), green: (153/255.0), blue:(255/255.0), alpha: 1)
let gradientColors: [CGColor] = [topColor.CGColor, bottomColor.CGColor]
let gradientLocations: [Float] = [0.0, 1.0]
let gradientLayer: CAGradientLayer = CAGradientLayer()
gradientLayer.colors = gradientColors
gradientLayer.locations = gradientLocations
return gradientLayer
}
}
Tôi có thể sử dụng để thiết lập nền tảng của toàn bộ quan điểm của tôi như sau:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let background = CAGradientLayer().backgroundGradientColor()
background.frame = self.view.bounds
self.view.layer.insertSublayer(background, atIndex: 0)
}
//...
}
Nhưng làm thế nào tôi có thể truy cập vào giao diện của nút và chèn lớp con hoặc thứ gì đó tương tự? Tôi đã Googled trong một vài giờ và không thể tìm thấy bất cứ điều gì hữu ích. Tôi khá mất mát với điều này.
Tôi không đồng ý với câu cuối cùng. Trong khi các nút là chế độ xem, nền của nút không giống với chế độ xem. Nền nút có thể thay đổi tùy thuộc vào trạng thái nút. Khi thêm gradient dưới dạng lớp, chúng tôi sẽ mất hiệu ứng đó. Giải pháp lý tưởng là chụp lớp gradient thành một hình ảnh để đặt hình ảnh làm hình nền của nút. Một vấn đề khác là lớp giới hạn phải luôn được cập nhật khi khung nút thay đổi, nghĩa là từ 'layoutSubviews'. – Sulthan