Подтвердить что ты не робот

Повернуть UIView в Cocoa Touch

Я видел других людей, у которых был этот вопрос, но большинство ответов не работают над последней версией 3.0 iPhone OS. Во всяком случае, мне интересно, как я могу программно повернуть UIView без ввода акселерометра. Код, который я нашел до сих пор:

CGAffineTransform transform = CGAffineTransformMakeRotation(3.14159/2);
view.transform = transform;
CGRect contentRect = CGRectMake(-80, 80, 480, 320);
view.bounds = contentRect;

Однако это не работает для UIView (в моем тестировании). Есть ли что-то, что я должен сделать для AppDelegate для того, чтобы этот/другой код функционировал, или есть лучший способ сделать то же самое?

Спасибо за любую помощь!

4b9b3361

Ответ 1

это работает для меня

 CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI_2);
 self.view.transform = transform;

 // Repositions and resizes the view.
 CGRect contentRect = CGRectMake(0,0, 480, 320);
 self.view.bounds = contentRect;

Ответ 2

У меня был успех:

CATransform3D rotationTransform = CATransform3DIdentity;
[view.layer removeAllAnimations];
rotationTransform = CATransform3DRotate(rotationTransform, angle, 0.0, 0.0, 1);
view.layer.transform = rotationTransform;

Ответ 3

Не уверен, что это считается частным API, поэтому вы не можете его использовать, но если вы хотите, чтобы ориентация изменилась без наклона устройства, вы можете попробовать:

[[UIDevice currentDevice] performSelector:@selector(setOrientation:)
                      withObject:(id)UIInterfaceOrientationLandscapeLeft];

Я не тестировал, что он по-прежнему работает на 3.1.2. хотя я знаю, что он работает на 3.0.