我有 UIBarButtonItem(在界面生成器中配置)。如果用户单击此按钮,将启动“繁重的过程”,为了获得更好的用户体验,我想将此按钮更改为 (UIActivityIndicatorView)。我通过以下方式进行:
self.indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
indicator.hidesWhenStopped = YES;
[self.heavyBarButton initWithCustomView:self.indicator];
[self.indicator startAnimating];
[NSThread detachNewThreadSelector:@selector(animateHeavyProcess) toTarget:self withObject:nil];
animateHeavyProcess:
[self heavyProcess];
[self.indicator stopAnimating];
UIBarButtonItem *originalButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"maximize.png"] style:UIBarButtonItemStylePlain target:self action:@selector(startProcessClick:)];
self.heavyBarButton = originalButton;
[originalButton release];
会发生什么:在用户单击 BarButton 动画后,动画将开始,处理按钮消失后。但是,我希望原始按钮再次显示。
最佳答案
如果您将 Grand Central Dispatch 用于繁重的流程会怎样?我会认为它更方便。但请记住,您不能使用该 block 中的任何 UI。这是一个例子:iphone ios running in separate thread
关于objective-c - 动画消失后的 UIBarButtonItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9533727/