[英]CAGradientLayer not applying to the full view in programmatically created UI
我正在開發一個以編程方式創建所有 UI 的 iOS 項目。 不是故事板。
我想向 UIViewController 的 UIView 的背景添加漸變。
我創建了以下擴展方法。
extension UIView {
func addGradient(colors: [UIColor]) {
let gradientLayer = CAGradientLayer()
gradientLayer.bounds = bounds
gradientLayer.colors = colors.map { $0.cgColor }
layer.insertSublayer(gradientLayer, at: 0)
}
}
我像這樣在 ViewController 的viewDidLoad
中添加了漸變。
let topColor = UIColor(red: 0.28, green: 0.521, blue: 0.696, alpha: 1)
let bottomColor = UIColor(red: 0.575, green: 0.615, blue: 0.692, alpha: 1)
view.addGradient(colors: [topColor, bottomColor])
但是漸變並未應用於屏幕的整個寬度和高度。
我打印了視圖的邊界並顯示了這些值。
(0.0, 0.0, 375.0, 812.0)
所以我不確定為什么漸變仍然沒有覆蓋全視圖。
我正在開發一個以編程方式創建所有 UI 的 iOS 項目。 不是故事板。
我想向 UIViewController 的 UIView 的背景添加漸變。
我創建了以下擴展方法。
extension UIView {
func addGradient(colors: [UIColor]) {
let gradientLayer = CAGradientLayer()
gradientLayer.bounds = bounds
gradientLayer.colors = colors.map { $0.cgColor }
layer.insertSublayer(gradientLayer, at: 0)
}
}
我像這樣在 ViewController 的viewDidLoad
中添加了漸變。
let topColor = UIColor(red: 0.28, green: 0.521, blue: 0.696, alpha: 1)
let bottomColor = UIColor(red: 0.575, green: 0.615, blue: 0.692, alpha: 1)
view.addGradient(colors: [topColor, bottomColor])
但是漸變並未應用於屏幕的整個寬度和高度。
我打印出視圖的邊界並顯示這些值。
(0.0, 0.0, 375.0, 812.0)
所以我不確定為什么漸變仍然沒有覆蓋全視圖。
當我們向 Gradient 層框架添加視圖邊界時,我們必須更新 viewDidLayoutSubviews 中的框架。 它對我有用 以下對我有用
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
self.gradient.frame = containerView.bounds
}
containerView 是我設置漸變層的視圖。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.