Я хочу сделать довольно простое вращение UIImageView. В основном у меня есть изображение колеса в идеально квадратном изображении, и я хочу повернуть его под анимацию.Странное поведение от вращения аффинного преобразования на iOS
Так что я попытался это:
- (void)testButtonPressed:(id)sender {
NSLog(@"Test button pressed");
CGAffineTransform transform = CGAffineTransformMakeRotation(1.0);
[UIView animateWithDuration:10.0 delay:0 options:UIViewAnimationOptionCurveLinear
animations:^{
dial.transform = transform; // "dial" is a UIImageView
}
completion: ^(BOOL finished){
}];
}
Что происходит, что, когда анимация начинается изображение (это около 300 квадратных) сразу вскакивает 50-100 пикселей и «выдавливается» в узкий овал. После этого анимация идет отлично.
Вместо этого я попытался использовать beginAnimation
и получил то же поведение.
Я понимаю, что я не понимаю вещи о происхождении вращения (обсуждение документов в кругах), но сжатие кажется странным, и факт, что все это происходит сразу (против анимирования), странно.
Любые идеи?
(Это работает на тренажере iPhone 6.0 из Xcode 4.5.1 Является ли это возможно только тренажер вещь.?)
Обновление: я получил возможность работать на нем немного больше (я это промежуточный «реальный» труд). Я создал новый XIB, у которого никогда не было автозапуска, и колесо было «нормальным», но фон был вертикально сжат.
Затем немного вдохновения. Я заметил, что изображения были отмечены как «авторезистировать» в дампах NLog. Не видел способа отключить это от IB, но видел, что вы можете отключить «Autoresize Subviews» на главном экране. Это и он прекрасно себя вел!
Я думаю, что некоторые из новых функций, введенных для автоаудита, являются виновниками здесь. Не знаю, хотя, если я нашел все магические настройки.
Но ... По-прежнему существует проблема, что «прозрачные» части моих изображений являются черными на iPad, даже после отключения «непрозрачного» на всем.
Обновление: Я, наконец, понял, что мои изображения были в режиме 24 бит в формате JPG, а не в 32-битном режиме. Это работает на симуляторе - чистый черный интерпретируется как прозрачный. Но это не работает на iPad. Использование 32-битных изображений устраняет это и (с «авторезистировать subviews, отключенные для устранения нечетных искажений/переводов) все в порядке кроме ... вращения> 180 градусов анимация назад. Анимация« умна »и принимает «кратчайший путь».
Я полагаю, я просто разбить анимацию на два этапа.
Я попробовал ваш код на квадратный вид UIImage, и он отлично работал для меня. – rdelmar
Хммм. Я сделал изображение меньшим (с большим запасом), и оно не искажается, но при запуске оно скатывается вниз и направо. –
Сделано меньше, и изображение скачет вниз. Но более странно то, что изображение за ним (которое не анимируется) сжимается горизонтально. Это примерно как ваниль, как я могу себе представить. –