在导航栏中显示许多信息

时间:2015-10-12 14:56:49

标签: ios swift uinavigationbar

我正在使用Xcode 6.4在Swift 1.2中开展一个项目。

我已经达到了想要完全自定义导航栏的程度。主要目标是显示一些不断变化的用户数据。为此我需要一个更大的导航栏,我可以在其中添加至少6个标签。

Navigation bar

我想知道这是否可能,以及如何? 谢谢

1 个答案:

答案 0 :(得分:1)

我相信通过添加多个字幕标签,这个代码应该很容易适应。您可以将自定义标题视图添加到导航栏,如下所示:

Result Image

- (void)updateTitle
{
    if(self.hasAppeared) {
        UIView *titleView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 180, 44)];

        UILabel *titleLabel = [[UILabel alloc] init];
        titleLabel.translatesAutoresizingMaskIntoConstraints = NO;
        titleLabel.text = convo[@"name"];
        titleLabel.textAlignment = NSTextAlignmentCenter;
        titleLabel.textColor = [UIColor whiteColor];
        titleLabel.font = [UIFont fontWithName:@"Quicksand-Light" size:18];
        titleLabel.adjustsFontSizeToFitWidth = YES;
        titleLabel.minimumScaleFactor = 0.7;
        [titleView addSubview:titleLabel];

        UILabel *subtitleLabel = [[UILabel alloc] init];
        subtitleLabel.translatesAutoresizingMaskIntoConstraints = NO;
        subtitleLabel.text = self.otherPersonString;
        subtitleLabel.textAlignment = NSTextAlignmentCenter;
        subtitleLabel.textColor = [UIColor whiteColor];
        subtitleLabel.font = [UIFont fontWithName:@"Quicksand-Light" size:13];
        subtitleLabel.adjustsFontSizeToFitWidth = YES;
        subtitleLabel.minimumScaleFactor = 0.7;
        [titleView addSubview:subtitleLabel];

        NSDictionary *views = NSDictionaryOfVariableBindings(titleLabel, subtitleLabel);

        [titleView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[titleLabel]-|" options:0 metrics:nil views:views]];
        [titleView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[subtitleLabel]-|" options:0 metrics:nil views:views]];
        [titleView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-(-3)-[titleLabel]-(-2)-[subtitleLabel]-(1)-|" options:0 metrics:nil views:views]];

        self.navigationItem.titleView = titleView;
    }
}

但是,您无法改变导航栏本身的高度,并且除非您重新创建,否则此内容不会在整个应用程序中保留在该栏中。您有什么理由不能在导航栏下方的新视图中添加它?