【问题标题】:Apply Gradient Colors on CarbonTapSwipeNavigation在 CarbonTapSwipeNavigation 上应用渐变色
【发布时间】:2018-05-15 04:27:18
【问题描述】:

我是 iOS 新手。我想在 CarbonTabSwipeNavigation 上应用渐变颜色。我尝试将渐变应用到 CarbonTabSwipeNavigation 的工具栏上,但它不起作用。这是代码。

let carbonTabSwipeNavigation = CarbonTabSwipeNavigation(items: items, delegate: self)
carbonTabSwipeNavigation.toolbar.setGradientToToolbar(default_pri_color: UIColor.DarkBlue(), default_sec_color: UIColor.LightBlue())

这是函数

extension UIToolbar {

    func setGradientToToolbar(default_pri_color: UIColor, default_sec_color: UIColor) {
        let gradient = CAGradientLayer()
        gradient.frame = self.bounds
        gradient.colors = [default_pri_color.cgColor, default_sec_color.cgColor]
        self.layer.insertSublayer(gradient, at: 0)
    }
}

【问题讨论】:

    标签: ios swift carbonkit


    【解决方案1】:

    问题在于gradientLayer 框架。当您在其上调用 setGradientToToolbar 方法时,Toolbar 约束尚未布局。因此,bounds 中的所有内容都为零,您无法看到渐变层。

    有两种方法可以解决这个问题,

    1)您为gradientLayer提供如下框架,

    func setGradientToToolbar(default_pri_color: UIColor , default_sec_color:UIColor) {
        let gradient = CAGradientLayer()
        gradient.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 120)            
        gradient.colors = [UIColor.red.cgColor, UIColor.green.cgColor]
        self.layer.insertSublayer(gradient, at: 0)
    }
    

    2) 在您的viewController 完成所有视图的布局后,在工具栏上调用setGradientToToolbar 方法。下面是完整的例子,

    import UIKit
    import CarbonKit
    
    class ViewController: UIViewController, CarbonTabSwipeNavigationDelegate {
    
        var carbonTabSwipeNavigation: CarbonTabSwipeNavigation!
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            let items = ["Features", "Products", "About"]
            carbonTabSwipeNavigation = CarbonTabSwipeNavigation(items: items, delegate: self)
            carbonTabSwipeNavigation.toolbarHeight.constant = 120
            carbonTabSwipeNavigation.insert(intoRootViewController: self)
        }
    
        func carbonTabSwipeNavigation(_ carbonTabSwipeNavigation: CarbonTabSwipeNavigation, viewControllerAt index: UInt) -> UIViewController {
            return UIViewController()
        }
    
        override func viewDidLayoutSubviews() {
            carbonTabSwipeNavigation.toolbar.setGradientToToolbar(default_pri_color: .red, default_sec_color: .yellow)
        }
    }
    
    extension UIToolbar {
    
        func setGradientToToolbar(default_pri_color: UIColor , default_sec_color:UIColor) {
            let gradient = CAGradientLayer()
            gradient.frame = self.bounds
            gradient.colors = [default_pri_color.cgColor, default_sec_color.cgColor]
            self.layer.insertSublayer(gradient, at: 0)
        }
    }
    

    两者都会给你以下结果,

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多