UILabel与CGAffineTransformMakeRotation基于方向? (ARC,故事板,LLDB)

时间:2012-01-28 01:00:32

标签: iphone ipad xcode4.2 uiimagepickercontroller mfmailcomposeviewcontroller

之前我曾经问过这个问题但是没有引起注意,而帮助我的人几周没有回复,所以请原谅我,但我仍然需要帮助。

我正在使用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));
}

2 个答案:

答案 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。 (这假设您不允许旋转到其他方向。)