UINavigationItem titleView动画

the*_*meg 6 animation objective-c uiimageview titleview ios

我正在使用基于UIImageView的动画来显示自定义活动指示器.以下代码负责设置:

+ (void)startLoadingActivity:(UIViewController *)vc {
    vc.parentViewController.navigationItem.titleView = [UIImageView imageViewWithPath:@"loading_" count:10 duration:1.3 frame:CGRectMake(0, 0, 22, 22)];
}
Run Code Online (Sandbox Code Playgroud)

这是UIImageView + Animation类别的要点.

每当我启动Web请求时,我都会启动活动指示器,每当请求完成时,我都会通过将titleView属性设置为来停止它nil.

结果是这样的:

好

请求方法也被调用到-viewDidAppear:视图控制器的方法中.

但是,每当动画在转换期间开始时,它的位置似乎UIImageView都是错误的.

以下结果显示了问题:

请注意活动指示符如何显示在"组"按钮之上.

KO

这个问题来自哪里?我该如何解决?

Asa*_*saf 0

我认为问题是,虽然您将 titleView 设置为 nil,但您没有从视图中删除加载程序,因此它的框架转到 (0,0) 位置。

请尝试以下操作:

+ (void)startLoadingActivity:(UIViewController *)vc {
    UIImageView *imageView = [UIImageView imageViewWithPath:@"loading_" count:10 duration:1.3 frame:CGRectMake(0, 0, 22, 22)];
    imageView.tag = 999;
    vc.parentViewController.navigationItem.titleView = imageView;
}
Run Code Online (Sandbox Code Playgroud)

每当设置

titleView = nil
Run Code Online (Sandbox Code Playgroud)

还做

[[self.navigationController.view viewWithTag:999] removeFromSuperView];
Run Code Online (Sandbox Code Playgroud)