我正在尝试使用Swift在iOS 11中使用新的大型标题系统。当标题太长时(参见图片示例),它会添加...而不是换行或缩小文本大小。如何添加换行符?
以下是我用来设置标题的一些代码:
self.navigationController?.navigationBar.prefersLargeTitles = true
self.navigationController?.navigationBar.largeTitleTextAttributes = [NSForegroundColorAttributeName: MyGlobalVariable.themeMainColor]
self.navigationController?.navigationBar.largeTitleTextAttributes = [NSFontAttributeName: UIFont.systemFont(ofSize: 22)]
navigationItem.title = "Search by Name"
答案 0 :(得分:1)
试试这个:
for navItem in (self.navigationController?.navigationBar.subviews)! {
for itemSubView in navItem.subviews {
if let largeLabel = itemSubView as? UILabel {
largeLabel.text = self.title
largeLabel.numberOfLines = 0
largeLabel.lineBreakMode = .byWordWrapping
}
}
}
它对我有用。
答案 1 :(得分:0)
这是Objective-C,但我用backButton做了什么。 我重写了UIViewController的setTitle方法,如下所示:
-(void)setTitle:(NSString *)title{
[super setTitle:title];
for(id item in self.navigationController.navigationBar.subviews){
if([item isKindOfClass:[UIView class]]){
UIView *lc_view = (UIView *)item;
for(id subItem in lc_view.subviews){
if([subItem isKindOfClass:[UILabel class]]){
UILabel *lc_label = (UILabel *)subItem;
lc_label.text = self.title;
lc_label.numberOfLines=0;
lc_label.lineBreakMode = NSLineBreakByWordWrapping;
}
}
}
}
[self.navigationController.navigationBar layoutSubviews];
[self.navigationController.navigationBar layoutIfNeeded];
}
然后我想设置标题我只是做了:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.02 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
self.title=@"Lorem ipsum dolor sit amet, consectetuer adipiscing elit.";
});
在我的情况下(更改 UIPageViewController didFinishAnimating 方法中的标题),似乎延迟< 0.02没有工作。