Я занимаюсь разработкой приложения для iPad, в котором есть набор экземпляров UIButton, где я делаю небольшое вращение CGAffineTransform в viewWillAppear:
, чтобы они не были идеально выровнены на экране.Однако возникает проблема, когда устройство поворачивается в любом направлении, а фоновое изображение кнопки становится все более и более искаженным, чем больше оно поворачивается:
Правильно:
После нескольких поворотов устройства:
Вот код, который я использую для анимации представления на viewDidAppear:
:
/*
* Animate video button
*/
CGPoint videoCenter = self.videoButton.center;
self.videoButton.center = CGPointMake(self.videoButton.center.x + 25.0f, self.videoButton.center.y + 25.0f);
[UIView animateWithDuration:0.5f
delay:0.0f
options:UIViewAnimationOptionCurveEaseInOut
animations:^{
self.videoButton.center = videoCenter;
self.videoButton.transform = CGAffineTransformRotate(CGAffineTransformIdentity, [self convertDegreesToRadians:4.0f]);
}
completion:^(BOOL finished) {
// Do Nothing
}];
Я попытался сбросить преобразование до того, что мне нужно, чтобы оно было в willRotateToInterfaceOrientation:
, и, хотя оно уменьшает степень, до которой это происходит, после ряда поворотов оно дает аналогичный результат.
У меня естьпопытался изменить autoresizesSubviews
основного вида на NO
:
self.view.autoresizesSubviews = NO;
Но затем я должен полностью разложить свою альбомную ориентацию вручную, чего я хочу избежать.
Как настроить преобразование вращения, чтобы оно не искажало фоновые изображения моего UIButton
при ориентации устройства?
ОБНОВЛЕНИЕ:
Я добавил несколько операторов журнала в viewWillRotateToInterfaceOrientation:
и заметил, что ширина кнопки увеличиваетсяг.Это объясняет искажение изображения, но почему оно даже меняется?Это кажется мне странным:
width height
-------------------------------
268.574524 149.81514
286.267822 150
304.092621 150
321.91745 150
339.742279 150
357.567078 150
374.401642 150
391.236206 150
409.061066 150
425.895599 150
442.730164 150
459.564728 150
476.399292 150
493.233826 150
509.078125 150
524.922424 150
540.766663 150
556.611023 150