这篇文章是一个单独的主题,但与Custom Nav Title offset ios 11
有关我创建了一个新线程,因为它是一个单独的问题。
来自项目:https://github.com/ekscrypto/Swift-Tutorial-Custom-Title-View
要重新创建问题,只需在现有的Root View Controller上放置一个按钮即可推送另一个视图控制器。 "<回到"按钮将标题翻过来,这使得它非常不受欢迎。我怎样才能解决这个问题?谢谢。
答案 0 :(得分:6)
支持早期版本iOS所需的简单更改;你应该适当地调整自定义标题视图的大小,使其成为实际的预期宽度。 iOS 11尝试根据约束调整标题视图的宽度以适应可用空间,但iOS 10及更低版本将尝试尽可能地保持视图的大小。
因此,解决方案是打开MyCustomTitleView.xib文件,并将MyCustomTitleView的宽度设置为合理的值,如180pt。
干杯!
答案 1 :(得分:0)
对于iOS 10及更低版本,您需要为属性titleLabel设置CGFrame。 这是代码示例。
- (void)viewDidLoad {
[super viewDidLoad];
UILabel *titleLabel = [[UILabel alloc]init];
NSDictionary *fontAttribute = @{ NSFontAttributeName:[UIFont fontWithName:@"SFProText-Medium" size:15.f]};
NSAttributedString *str = [[NSAttributedString alloc]initWithString:@"YOUR TITLE"
attributes:fontAttribute];
titleLabel.attributedText = str;
[titleLabel sizeToFit]; // This method create a frame
self.navigationItem.titleView = titleLabel;
}
Swift示例:
override func viewDidLoad() {
super.viewDidLoad()
let titleLabel = UILabel()
let title = NSMutableAttributedString(string: "Your title", attributes:[
NSAttributedStringKey.foregroundColor: UIColor.blue,
NSAttributedStringKey.font: UIFont.systemFont(ofSize: 17.0, weight: UIFont.Weight.light)])
titleLabel.attributedText = title
titleLabel.sizeToFit()
self.navigationItem.titleView = titleLabel
}