【发布时间】:2012-02-26 12:17:52
【问题描述】:
现在我正在使用这段代码,稍作修改:
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];
}
但我确实需要在显示视图之前获取该照片,因为我需要将该照片设置为我的 photoButton 的背景。
那么,有没有办法避免卡住视图的动画?因为它确实会导致糟糕的用户体验。
非常感谢!
【问题讨论】:
标签: ios multithreading user-interface photo lag