настройка navigationController? .navigationBar.prefersLargeTitles = true отключает стиль по умолчанию ... как установить его в стиле Apple? - PullRequest
0 голосов
/ 12 октября 2019

установка prefersLargeTitle = true выглядит совсем не так, как ложная версия - я думаю, что это так. Но что, если я хочу, чтобы он выглядел точно так же, т.е. с тонкой серой линией внизу или полупрозрачным?

Кроме того, StatusBar прозрачен - нужно ли устанавливать для него цвет фона, чтобы содержимое прокрутки НЕ просвечивало? Но это не самая большая проблема для этой темы и момент, хотя. ;)

ни одна из настроек не имеет эффекта, и я просто не могу понять, почему ... кстати. нет версии раскадровки!

ViewController

class ViewController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

        view.backgroundColor = .white

        let tabBar = UITabBar.appearance()
        tabBar.barStyle = .default
        tabBar.isTranslucent = true

        let vcOne = UINavigationController(rootViewController: ViewOneController())
        vcOne.tabBarItem.image = UIImage(systemName: "house.fill")
        vcOne.tabBarItem.title = "One"

        let vcTwo = UINavigationController(rootViewController: ViewTwoController())
        vcTwo.tabBarItem.image = UIImage(systemName: "list.dash")
        vcTwo.tabBarItem.title = "Two"

        let vcThree = UINavigationController(rootViewController: ViewThreeController())
        vcThree.tabBarItem.image = UIImage(systemName: "trash.fill")
        vcThree.tabBarItem.title = "Two"
        viewControllers = [vcOne, vcTwo, vcThree]
    }

}

ViewOneConroller

class ViewOneController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        navigationItem.title = "Controller One"

    }

}

Результат первого контроллера и "дизайн "или" стиль ", который я хотел бы иметь в большой названной версии в отношении фона, тени и т. д.: * 10101 *

Result of the first ViewController

ViewTwoController

class ViewTwoController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        navigationItem.title = "Controller Two"
        self.navigationController?.navigationBar.prefersLargeTitles = true
    }

}

Это результат работы контроллера второго представления без каких-либо настроек, но для большого заголовка установлено значение "true":

Result of the second ViewController

ViewThreeController

class ViewThreeController: UIViewController {

    let img: UIImageView = {
        let imageView           = UIImageView()
        imageView.image         = UIImage(named: "image")
        return imageView
    }()

    override func viewDidLoad() {
        super.viewDidLoad()

        view.backgroundColor = .white

        view.addSubview(img)
        img.translatesAutoresizingMaskIntoConstraints = false
        img.contentMode   = .scaleAspectFit
        NSLayoutConstraint.activate([
            img.centerXAnchor.constraint(equalTo: view.centerXAnchor),
            img.topAnchor.constraint(equalTo: view.topAnchor, constant: -50),
            img.widthAnchor.constraint(equalToConstant: 500)
        ])

        navigationItem.title = "Controller Three"

        self.navigationController?.navigationBar.prefersLargeTitles = true
        self.navigationController?.navigationBar.backgroundColor    = .white
        self.navigationController?.navigationBar.shadowImage        = UIImage(contentsOfFile: "shadow")
        self.navigationController?.navigationBar.isTranslucent      = true

        // setting it via BarAppearance has no effect neither?!
        UINavigationBarAppearance().shadowColor = .black



    }

}

и третий с настройками, но не с ними, имеют какой-либо эффект, как вы можете видеть на изображении внизу.

enter image description here

...