之前我曾经问过这个问题但是没有引起注意,而帮助我的人几周没有回复,所以请原谅我,但我仍然需要帮助。
我正在使用CGAffineTransformMakeRotation将UILabel翻转180度,我希望基于UIOrientationPortrait和UIOrientationPortraitUpsideDown进行旋转。我得到1/2的结果:当用户翻转(从肖像)时,标签变换180并翻转(仍然面向主页按钮[重要])
BUT
当我将其旋转回纵向时,标签处于翻转旋转状态,并且不会停留在主页按钮上。那就是我需要帮助....
这是我的代码:
#define degreesToRadian(x) (M_PI * (x) / 180.0)
...
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
TranslateLabel.transform = CGAffineTransformMakeRotation(degreesToRadian(180));
}
答案 0 :(得分:2)
无论方向如何,您都会将其上下颠倒。如果您希望它根据方向进行不同的旋转,则必须执行以下操作:
-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
switch(toInterfaceOrientation){
case UIInterfaceOrientationPortrait:
TranslateLabel.transform = CGAffineTransformIdentity;
break;
case UIInterfaceOrientationPortraitUpsideDown:
TranslateLabel.transform = CGAffineTransformMakeRotation(degreesToRadian(180));
break;
}
}
这样,当设备上下颠倒时,它会将标签上下颠倒,当设备处于纵向时,它会使标签恢复正常。
答案 1 :(得分:0)
我认为您想要启用toInterfaceOrientation
,如果方向为UIInterfaceOrientationPortraitUpsideDown
则设置如上所述的转换,并在CGAffineTransformIdentity
时设置为UIInterfaceOrientationPortrait
。 (这假设您不允许旋转到其他方向。)