Настройка панели заголовка tabview

#ios #swift #iphone #xcode #xcode-storyboard

#iOS #swift #iPhone #xcode #xcode-раскадровка

Вопрос:

Я хочу отображать заголовок каждого моего представления в tabview вверху с выравниванием текста по левому краю, в настоящее время, когда я переключаю верхнюю панель заголовка в раскадровке, я получаю что-то вроде этого:

панель заголовка для просмотра в раскадровке

Но когда я запускаю свое приложение, заголовок отображается не так, как мне показать это, когда приложение запущено??

Обновление 1:

Я могу отображать строку заголовка, встраивая контроллер tabview в контроллер navigationview. Теперь единственная проблема, с которой я сталкиваюсь, — это настройка выравнивания заголовка по левому краю.

Ответ №1:

Попробуйте это:

 navigationItem.largeTitleDisplayMode = .always
navigationController?.navigationBar.prefersLargeTitles = true
  

Комментарии:

1. Он по-прежнему не отображает заголовок.

Ответ №2:

Я написал пользовательское расширение, для UINavigationItem которого заголовок выравнивается по левому краю:

 extension UINavigationItem {
    
    // MARK: Use this Method for setting up title for Any Controller *ALWAYS*
    public func setTitle(_ title: String, leftInset: CGFloat = -5) {
        let label = UILabel()
        label.text = title
        label.textAlignment = .left
        let customView = UIView()
        customView.translatesAutoresizingMaskIntoConstraints = false
        label.translatesAutoresizingMaskIntoConstraints = false
        customView.backgroundColor = .clear
        label.textAlignment = .left
        customView.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 0)

        if #available(iOS 12, *) {
            label.frame.origin = CGPoint(x: leftInset   3, y: -13)
        } else {
            label.frame.origin = CGPoint(x: leftInset, y: -13)
        }
        customView.addSubview(label)
        customView.layoutIfNeeded()
        customView.sizeToFit()
        label.layoutIfNeeded()
        label.sizeToFit()
        customView.translatesAutoresizingMaskIntoConstraints = true
        label.translatesAutoresizingMaskIntoConstraints = true
        titleView = customView
    }
}
  

Добавьте это в каждый UIViewController , который используется в tabview:

 override func viewWillAppear(_ animated: Bool) {
        tabBarController?.navigationItem.setTitle("Sample", leftInset: 12)
    }
  

tabviewcontroller должен быть встроен в navigationviewcontroller, чтобы это работало.