我想要一个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/