gpt4 book ai didi

ios - 自从获取照片以来,用户界面有点卡住

转载 作者:行者123 更新时间:2023-11-29 04:47:15 24 4
gpt4 key购买 nike

现在我正在使用这段代码,稍作修改:

if (self._photoPath && !self._photo) {
dispatch_queue_t bg_thread = dispatch_queue_create("com.yourcompany.bg_thread", NULL);
dispatch_queue_t main_queue = dispatch_get_main_queue();
dispatch_async(bg_thread,^{
NSData *data = [NSData dataWithContentsOfFile:self._photoPath];
if(data != nil) {
dispatch_async(main_queue,^{
self._photo = [UIImage imageWithData:data];
[self.photoButton setImage:[UIImage imageNamed:@"photoButton.png"] forState:UIControlStateNormal];
});
}
});

}

正如你所看到的,事实上,在我得到那张照片后,我想立即将它设置到我的“photoButton”,但现在,UI 变得平滑了,但我的 photoButton 的外观始终是黑色的......

接下来我应该做什么?

___________________已更新____________________

我有 2 个 viewController,A 和 B。A是根viewController,B是A的子viewController。B中有一个调用相机拍照的按钮。

用户拍摄照片后,照片的外观就变成了那张照片。

当我从 A 推送一个新的 B(没有照片)时,事情进展顺利。但当里面有一个老B,里面有照片时,动画有点卡住,我猜是由以下代码引起的:

- (void)viewWillAppear:(BOOL) animated {
if (self._photoPath && !self._photo) {
NSData *data = [NSData dataWithContentsOfFile:self._photoPath];
if(data != nil)
self._photo = [UIImage imageWithData:data];
}
[super viewWillApear];
}

但我确实需要在显示 View 之前获取该照片,因为我需要将该照片设置为 photoButton 的背景。

那么,有没有办法避免粘住 View 的动画呢?因为这确实会导致糟糕的用户体验。

最佳答案

尝试在后台线程中获取照片(我在这里使用 GCD):

- (void)viewWillAppear:(BOOL) animated {
if (self._photoPath && !self._photo) {
dispatch_queue_t bg_thread = dispatch_queue_create("com.yourcompany.bg_thread", NULL);
dispatch_queue_t main_queue = dispatch_get_main_queue();
dispatch_async(bg_thread,^{
NSData *data = [NSData dataWithContentsOfFile:self._photoPath];
if(data != nil) {
dispatch_async(main_queue,^{ self._photo = [UIImage imageWithData:data]; });
}
});
}
[super viewWillApear];
}

关于ios - 自从获取照片以来,用户界面有点卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9445315/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com