मैं बस तेजी से पहुंच के लिए अलग-अलग छवियों को प्रस्तुत करना चाहता हूं। मैं विभिन्न ब्लॉक निष्पादित करने के लिए यहां भव्य केंद्रीय प्रेषण का उपयोग करता हूं।ग्रैंड सेंट्रल डिस्पैच - लोड होने पर पहली छवि प्रदर्शित करें?
कतार शुरू करने के बाद, मैं इसे पूरा होने पर पहली छवि सेट करना चाहता हूं। नीचे दिए गए वर्तमान कोड के साथ, दुर्भाग्य से पहली छवि केवल तब प्रदर्शित की जाएगी जब सभी छवियां प्रस्तुत की गई हों।
तो मैं कोड को कैसे संशोधित कर सकता हूं? क्या प्रत्येक छवि समाप्त होने पर प्रतिनिधि बनना संभव है?
Here's कोड:
// Async prerendering
for (int i = 0; i < count; i++) {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
dispatch_async(dispatch_get_main_queue(), ^{
UIImage* finalImage = [self prerenderImageForIndex:i];
[self.imageArray addObject:finalImage];
// TODO: i want to display the first image.
// rendering goes on in the background
if (i==0 && [self.imageArray objectAtIndex:0] != nil) {
self.image = [self.imageArray objectAtIndex:0];
}
});
});
}
अद्यतन:
-(UIImage*) prerenderImageForIndex:(int)frame {
UIGraphicsBeginImageContextWithOptions(CGSizeMake(self.frame.size.width, self.frame.size.height), NO, 0);
for (int i=0; i< [configurationArray count]; i++) {
//... get the layerName
UIImage* layerImage = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:layerName ofType:@"png"]];
// draw layer with blendmode and alpha
[layerImage drawInRect:CGRectMake(x, y, layerImage.size.width, layerImage.size.height)
blendMode:layerblendmode
alpha: layeralpha];
}
// Get current context as an UIImage
UIImage* finalImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return finalImage;
}
मैं सिर्फ जानना चाहता मैं कैसे रद्द/स्टॉप या किसी चल कतार पुनः आरंभ करना चाहते हैं? क्या यह संभव है? आपकी मदद के लिए धन्यवाद।
हाँ, यह समस्या हल करता है! आपका बहुत बहुत धन्यवाद। मैं "self.image" को "dispatch_async (queue,^{" के भीतर असाइन करता हूं। अब यह सही काम करता है! फिर भी मैं इसके बारे में प्रलेखन पर एक नज़र डालेगा। धन्यवाद। – geforce