How to line break long large title in iOS 11?

前端 未结 2 505
醉梦人生
醉梦人生 2021-01-01 02:21

I am trying to use the new large title system in iOS 11 using Swift. When the title gets too long (see image example), it adds ... instead of line breaking or shrinking the

相关标签:
2条回答
  • 2021-01-01 02:39

    This is Objective-C but what I did worked with backButton. I override the setTitle method of UIViewController like this :

    -(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];
    }
    

    Then where I want to set the title I simply did :

    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.";
    
    });
    

    In my case (changing title in UIPageViewController didFinishAnimating method) it seems that a delay < 0.02 didn't work.

    0 讨论(0)
  • 2021-01-01 02:42

    Try this:

    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
            }
        }
    }
    

    It worked for me.

    0 讨论(0)
提交回复
热议问题