我使用了一个基于UIImageView的动画来显示一个自定义的活动指示器。以下代码负责设置此设置:
+ (void)startLoadingActivity:(UIViewController *)vc {
vc.parentViewController.navigationItem.titleView = [UIImageView imageViewWithPath:@"loading_" count:10 duration:1.3 frame:CGRectMake(0, 0, 22, 22)];
}下面是UIImageView+Animation类别的要点。
每当我启动web请求时,我就会启动活动指示器,而每当请求完成时,我就会通过将titleView属性设置为nil来停止它。
结果是这样的:

请求方法也被调用到视图控制器的-viewDidAppear:方法中。
但是,每当动画在过渡期间启动时,UIImageView的位置似乎都是错误的。
以下结果显示了问题:
请注意活动指示器如何显示在“组”按钮的顶部。

这个问题是从哪里来的?我该怎么解决它呢?
发布于 2015-04-13 03:20:37
我认为问题在于,尽管您将titleView设置为nil,但您并没有从视图中移除加载器,因此它的frame转到了(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;
}无论何时设置
titleView = nil也要做
[[self.navigationController.view viewWithTag:999] removeFromSuperView];发布于 2017-08-07 19:09:14
这个问题是这个问题的一个很好的演示,答案在这里:Stackoverflow title moves while push/pop of viewcontroller
长话短说:
在.autoresizingMask = UIViewAutoresizingFlexibleTopMargin
https://stackoverflow.com/questions/29593287
复制相似问题