[英]UIImageView.image Not Receiving Value of UIImage
我在將圖像的值分配給圖像視圖圖像時遇到困難。 我測試了源圖像在分配給圖像視圖圖像時是否具有值,並且確實如此。 但是,分配似乎沒有發生,並且圖像視圖圖像保持為空。 有人可以幫我解決我做錯的事情嗎?
謝謝。
- (void)viewDidLoad {
[super viewDidLoad];
self.scrollView.contentSize = self.imageView.image.size;
self.scrollView.delegate = self;
self.scrollView.minimumZoomScale = 1.0;
self.scrollView.maximumZoomScale = 100.0;
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
dispatch_async(queue, ^{
NSString *imageName = @"http://my.domain.com/image.png";
UIImage *img = [[UIImage alloc] init];
NSURL *imageURL = [NSURL URLWithString:imageName];
[self.activityIndicator startAnimating];
NSData *imageData = [NSData dataWithContentsOfURL:imageURL];
img = [UIImage imageWithData:imageData];
dispatch_async(dispatch_get_main_queue(), ^{
self.imageView.image = img;//img HAS a value, but self.imageView.image does NOT receive it
[self.activityIndicator stopAnimating];
[self.imageView setNeedsDisplay];
});
});
}
我認為UIImage
問題。 在其中分配UIImage
對象。 嘗試這個 :
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
dispatch_async(queue, ^{
[self.activityIndicator startAnimating];
NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://techbeasts.com/wp-content/uploads/2014/04/Wallpaper-HD.jpg"]]; // Your image URL. First check it in browser image is there.
dispatch_async(dispatch_get_main_queue(), ^{
self.imageView.image = [UIImage imageWithData:imageData];//img HAS a value, but self.imageView.image does NOT receive it
[self.activityIndicator stopAnimating];
[self.imageView setNeedsDisplay];
});
});
問題在於,您必須使用dispatch_async
和dispatch_sync
對。 因此,內部塊將等到外部塊完成其執行並下載映像。
dispatch_async(queue, ^{
NSString *imageName = @"http://my.domain.com/image.png";
UIImage *img = [[UIImage alloc] init];
NSURL *imageURL = [NSURL URLWithString:imageName];
[self.activityIndicator startAnimating];
NSData *imageData = [NSData dataWithContentsOfURL:imageURL];
img = [UIImage imageWithData:imageData];
dispatch_sync(dispatch_get_main_queue(), ^{
self.imageView.image = img;//img HAS a value, but self.imageView.image does NOT receive it
[self.activityIndicator stopAnimating];
[self.imageView setNeedsDisplay];
});
});
然后確保imageView
或者通過編程方式或使用IB與分配。
插座未正確連接。 重新連接解決了該問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.