#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, чтобы это работало.