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都是错误的.
以下结果显示了问题:
请注意活动指示符如何显示在"组"按钮之上.

这个问题来自哪里?我该如何解决?
我认为问题是,虽然您将 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)