Применить градиентные цвета на CarbonTapSwipeNavigation - PullRequest
0 голосов
/ 15 мая 2018

Я новичок в 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)
    }
}

1 Ответ

0 голосов
/ 15 мая 2018

Проблема связана с рамкой gradientLayer.Ограничения Toolbar еще не определены, когда вы вызываете метод setGradientToToolbar для него.Итак, со всем нулем в 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) Вызовите метод setGradientToToolbar на панели инструментов после того, как ваш viewController закончит макет для всех видов.Ниже приведен полный пример:

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)
    }
}

Оба приведут вас к следующему результату:

enter image description here

...