tôi mở rộng UIView để thêm một phương pháp addGradientWithColor() để có được nền gradient:Áp dụng nền gradient cho UIView sử dụng bố trí tự động
extension UIView {
func addGradientWithColor() {
let gradient = CAGradientLayer()
gradient.frame = self.bounds
gradient.colors = [gradientEndColor.CGColor, gradientStartColor.CGColor]
gradient.startPoint = CGPointMake(1,0)
gradient.endPoint = CGPointMake(0.2,1)
self.layer.insertSublayer(gradient, atIndex: 0)
} }
Vấn đề của tôi là khi tôi chạy chế độ phong cảnh, các UIView không kéo dài
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
self.view.addGradientWithColor() }
tôi cố gắng để gọi viewDidLayoutSubviews() nhưng nó không hoạt động đúng
Dưới đây là ảnh chụp màn hình:
sau khi gỡ bỏ viewDidLayoutSubviews()
Bạn đã kiểm tra này [iOS8-auto-layout-and gradient] (http://stackoverflow.com/questions/31172151/ios8-auto-layout-and-gradient) – rob180
Tại sao bạn không phân lớp UIView và ghi đè lên phương thức drawRect. Trong phương thức đó, chỉ cần thêm gradient. Sau đó, để UIView chỉ cần thêm các ràng buộc mà bạn cần và nó sẽ làm việc. – TomCobo
@ rob180 cảm ơn. có nhưng không làm việc vấn đề của tôi – Aravi