CoreImage
サムネイルを取得し、それにフィルターを適用してから、カスタムUITableViewCell's
imageView
プロパティに設定するコードが少しあります。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),
^{
CIImage *inputImage = [[CIImage imageWithCGImage:self.thumbnail.CGImage]retain];
CIFilter *filter = [[CIFilter filterWithName:@"CISepiaTone" keysAndValues:
kCIInputImageKey, inputImage,
@"inputIntensity", [NSNumber numberWithFloat:1.0],
nil] retain];
CIImage *outputImage = [[filter outputImage] retain];
CGImageRef cgimage = [self.context createCGImage:outputImage fromRect:[outputImage extent]];
filtersTableViewCellItem.thumbnail = [UIImage imageWithCGImage:cgimage];
[filter release];
[outputImage release];
[inputImage release];
CGImageRelease(cgimage);
dispatch_async(dispatch_get_main_queue(),
^{
UITableViewCell *tableViewCell = [[self cellForRowAtIndexPath:indexPath] retain];
if (tableViewCell)
{
[filtersTableViewCell.activityIndicatorView stopAnimating];
filtersTableViewCell.imageView.image = filtersTableViewCellItem.thumbnail;
}
[tableViewCell release];
});
});
サムネイルは適切に作成されていますが、で更新されていませんimageView
。私はsetNeedsDisplay
役に立たないようにしようとしました。面白いことに、私がこのような同様のコードを使用したが、カスタムを使用していなかった場合UITableViewCell
、それは完全に正常に機能しました。なぜこれが機能しないのかについて誰かが洞察を持っていますか?