2

I want to implement the progress view as shown in the image below.

Does anyone know how to implement such a progress view in UINavigationBar?

enter image description here

4

2 回答 2

1

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

但您也想创建 UINavigationBar 的子类。您可以使用以下代码在代码中设置自定义导航栏:

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

或者,如果您使用 Storyboard,您可以在 Document Outline 的 Navigation Controller Scene 中选择您的子类。(左侧边栏)

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

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

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

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

最后,您还需要向 UINavigationBar 子类添加一些方法来隐藏和显示栏,可能带有一些动画。

于 2013-09-02T20:23:45.050 回答
0

这一定很有用。试着用它作为例子来编写你的代码。

https://github.com/ninjinkun/NJKWebViewProgress

于 2013-09-02T19:33:43.080 回答