#ios #animation #ios7 #core-graphics #appstore-approval
#iOS #Анимация #ios7 #ядро-графика #appstore-одобрение
Вопрос:
Я весь день искал различные способы динамического применения одного фильтра в анимации.
Я хочу применить сильный фильтр CIPixellation к изображению и постепенно анимировать исходное изображение, не используя что-то вроде альфа-затухания, которое просто не будет иметь желаемого эффекта анимации.
Я посмотрел на графический образ Брэда, но импорт МБ фреймворка в очень простое приложение немного отпугнул меня, хотя, похоже, он идеально подошел бы.
Итак, единственное, что оставалось сделать, показалось мне немного халтурным и мошенническим, поэтому я спрашиваю: может ли приведенный ниже код привести к отклонению моего приложения? И если да, то на каком основании?
Приветствия.
- (void)pixellateImage:(UIImage *)image fromValue:(int)from toValue:(int)to
{
dispatch_queue_t bgQueue = dispatch_queue_create("bgqueue", NULL);
for (int i = from; i >= to; i--) {
dispatch_async(bgQueue, ^{
CIContext *context = [CIContext contextWithOptions:nil];
CIImage *ciImage = [[CIImage alloc] initWithImage:[UIImage imageNamed:@"c3po"]];
CIFilter *blur = [CIFilter filterWithName:@"CIPixellate"];
[blur setValue:ciImage forKey:kCIInputImageKey];
[blur setValue:[NSNumber numberWithInt:i] forKey:@"inputScale"];
CGImageRef imageRef = [context createCGImage:blur.outputImage fromRect:[blur.outputImage extent]];
UIImage *returnImage = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
dispatch_async(dispatch_get_main_queue(), ^{
self.imageView.image = returnImage;
});
});
}
}
Ответ №1:
Пока вы не используете частные API, хакерский код не приведет к отклонению.
Комментарии:
1. Приветствия. Можете ли вы придумать лучший способ, чем этот? Что-то, что вряд ли приведет к потере памяти устройства, если она разрядится?
2. @aframe Я бы применил фильтр ко всем изображениям заранее, а затем установил их для анимации в UIImageView с помощью
animationImages
свойства.3. Черт. Это намного проще. Приветствия