【问题标题】:SwiftUI NavigationBar Background Gradient on iPadiPad 上的 SwiftUI NavigationBar 背景渐变
【发布时间】:2020-11-25 11:35:12
【问题描述】:

我正在将我的 UIKit 应用程序传递给 SwiftUI 并努力完成这项工作。

我想在我的双栏 iPad 显示器的每个导航栏上放置一个从左到右的渐变。

我尝试了各种方法,但都没有成功。

【问题讨论】:

    标签: ipad swiftui uinavigationbar gradient


    【解决方案1】:

    使用 FRIDDAY 的回答 How change background color if using NavigationView in SwiftUI?, 我实现了备受赞赏的渐变:

    extension UINavigationController {
        
        override open func viewDidLoad() {
            
            super.viewDidLoad()
            
            let gradient = CAGradientLayer()
            
            gradient.frame = self.view.bounds
            gradient.colors = [UIColor(Colors.red).cgColor, UIColor(Colors.orange).cgColor]
            gradient.startPoint = CGPoint(x: 0.0, y: 0.5)
            gradient.endPoint = CGPoint(x: 1.0, y: 0.5)
            
            let standard = UINavigationBarAppearance()
            standard.backgroundImage = gradient.toImage()
    
            let compact = UINavigationBarAppearance()
            compact.backgroundImage = gradient.toImage()
    
            let scrollEdge = UINavigationBarAppearance()
            scrollEdge.backgroundImage = gradient.toImage()
    
            self.navigationBar.standardAppearance = standard
            self.navigationBar.compactAppearance = compact
            self.navigationBar.scrollEdgeAppearance = scrollEdge
            
        }
        
    }
    

    【讨论】:

    • 你在渐变上使用的 toImage() 函数是什么?
    • 好吧,我猜你有这样的东西: import Foundation import QuartzCore import UIKit extension CALayer { func toImage() -> UIImage { UIGraphicsBeginImageContextWithOptions(frame.size, isOpaque, 0) render(in: UIGraphicsGetCurrentContext( )!) 让 outputImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() 返回 outputImage! } }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    • 2022-08-07
    • 2021-02-07
    • 1970-01-01
    • 2018-10-28
    相关资源
    最近更新 更多