我正在尝试处理这样的事情:
我有一个 UIButton
操作,它调用 UIImagePickerController
并显示它进行拍摄。但是加载需要一段时间——尤其是在第一次运行时。所以我决定放置一个 UIActivityIndicator
以在加载相机时保持旋转。
但我遇到了一个问题 - UIImagePicker
正在主线程中加载,因此指示器不会显示。我该如何解决这个问题?
这是我的方法:
- (IBAction)takePhoto:(UIButton *)sender
{
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.allowsEditing = YES;
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
UIActivityIndicatorView *activityView=[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
activityView.center=self.view.center;
[self.view addSubview:activityView];
[activityView startAnimating];
[self presentViewController:imagePicker animated:NO completion:nil];
}
最佳答案
我遇到了同样的问题,UIImagePickerController 分配需要很多时间,所以为了避免主线程阻塞,你可以使用下一个代码:
- (IBAction)takePhoto:(UIButton *)sender
{
UIActivityIndicatorView *activityView=[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
activityView.center=self.view.center;
[self.view addSubview:activityView];
[activityView startAnimating];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.allowsEditing = YES;
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
dispatch_async(dispatch_get_main_queue(), ^{
[self presentViewController:imagePicker animated:NO completion:nil];
});
});
}
关于ios - 带有 UIActivityIndicator 的 UIButton Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18356205/