tintColor - это спасатель жизни, он требует применения приложения на совершенно новом (легком) уровне.
//the life saving bit is the new UIImageRenderingModeAlwaysTemplate mode of UIImage
UIImage *templateImage = [[UIImage imageNamed:@"myTemplateImage"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
imageView.image = templateImage;
//set the desired tintColor
imageView.tintColor = color;
Вышеприведенный код "накрасит" изображение непрозрачными частями в соответствии с цветом оттенка UIImageview, который так крут. Нет необходимости в базовой графике для чего-то простого.
Проблема, с которой я сталкиваюсь, - это анимация.
Продолжая описанный выше код:
//The array with the names of the images we want to animate
NSArray *imageNames = @[@"1",@"2"@"3"@"4"@"5"];
//The array with the actual images
NSMutableArray *images = [NSMutableArray new];
for (int i = 0; i < imageNames.count; i++)
{
[images addObject:[[UIImage imageNamed:[imageNames objectAtIndex:i]] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]];
}
//We set the animation images of the UIImageView to the images in the array
imageView.animationImages = images;
//and start animating the animation
[imageView startAnimating];
Анимация выполняется правильно, но изображения используют исходный цвет (т.е. цвет, используемый в приложении редактирования gfx), а не tintColor UIImageView.
Я собираюсь сам выполнить анимацию (сделав что-то немного сверху, как прокручивание изображений и установив свойство изображения UIImageView с задержкой NSTimer, чтобы человеческий глаз мог ее поймать).
Прежде чем это сделать, я хотел бы спросить, должно ли свойство tintColor UIImageView поддерживать то, что я пытаюсь сделать с ним, и использовать его для анимаций.
Спасибо.