带有ProgressView的UINavigationBar

时间:2013-09-02 19:24:50

标签: objective-c uinavigationcontroller uinavigationbar

我想实现进度视图,如下图所示。

有谁知道如何在UINavigationBar中实现这样的进度视图?

enter image description here

2 个答案:

答案 0 :(得分:1)

这很简单。您只需将进度视图作为子视图添加到导航栏。

但是你想要创建UINavigationBar的子类也是对的。您可以在代码中设置自定义导航栏:

- (instancetype)initWithNavigationBarClass:(Class)navigationBarClass toolbarClass:(Class)toolbarClass

或者,如果您正在使用Storyboard,则可以在“文档大纲”的“导航控制器场景”中选择子类。 (左侧边栏)

在您的UINavigationBar子类中,您需要创建一个可从导航控制器层次结构中的任何视图控制器访问的方法,以便您可以从任何位置设置进度值。像这样:

-(void)updateProgress:(CGFloat)progress animated:(BOOL)animated;

这样,在其中一个需要更新此进度的视图控制器中,您可以通过获取对自定义栏类的引用来调用上述方法:

MYNavigationBar *bar = (MYNavigationBar *)[[self navigationController] navigationBar];
[bar updateProgress:0.5 animated:NO];

最后,您还需要在UINavigationBar子类中添加一些方法来隐藏和显示条形图,可能还有一些动画。

答案 1 :(得分:0)

这一定很有用。尝试使用它作为编写代码的示例。

https://github.com/ninjinkun/NJKWebViewProgress