我想要一个UIProgressView在导航栏的底部显示进度(就像在iOS 7中发送iMessage或文本消息时一样)。
但是我在导航 Controller 的每个表 View View 上都需要一致地使用它。
因此对我来说很清楚:我必须将其添加到UINavigationController中。
但是问题是,不可能将UIProgressView添加到UINavigationController中。
所以我尝试了两件事:

1我尝试以编程方式将其添加到UINavigationController的 View 中。但是问题是放置UIProgressView并使其在更改设备旋转时看起来不错。

我尝试过的第二件事是将UIProgressView添加到每个UITableView,但是实际上我必须对每个 View 都执行此操作。而且它看起来也不好,因为它不在导航栏的顶部,而是在导航条的下方。但是我不喜欢第二种解决方案的主要原因是因为ProgressViews随其TableView一起提供,所以您没有一个静态的但正在更改的TableView。

在此之后,我不知道要执行此操作,所以我问您…是否有人知道如何执行此操作?

那应该是这样的:

最佳答案

我终于找到了解决方案:

我制作了一个自定义UINavigationController并将其添加到viewDidLoad

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    progress = [[UIProgressView alloc] init];

    [[self view] addSubview:progress];

    UIView *navBar = [self navigationBar];


    [[self view] addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[navBar]-[progress(2@20)]"
                                                                        options:NSLayoutFormatDirectionLeadingToTrailing
                                                                        metrics:nil
                                                                          views:NSDictionaryOfVariableBindings(progress, navBar)]];

    [[self view] addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[progress]|"
                                                                        options:NSLayoutFormatDirectionLeadingToTrailing
                                                                        metrics:nil
                                                                          views:NSDictionaryOfVariableBindings(progress)]];

    [progress setTranslatesAutoresizingMaskIntoConstraints:NO];

    [progress setProgress:0 animated:NO];
}

我创建了一个新的UIProgressView(在@interface中声明),添加了约束以将其放置在导航栏下方,并且(此步骤很重要:)将translatesAutoresizingMaskIntoConstraints设置为NO

关于ios - 在UINavigationController的UINavigationBar内部或顶部显示UIProgressView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19211999/

10-11 14:50