UILabel与CGAffineTransformMakeRotation基于方向?(ARC、Storyboard、LL



我以前问过一次这个问题,但没有得到任何关注,帮助我的人已经好几个星期没有回应了,所以请原谅我,但我仍然需要帮助。

我使用CGAffineTransformMakeRotation将UILabel翻转180度,我想要基于UIOrientationPortrait和UIOrientation PortraitUpsideDown的旋转。我得到了1/2的结果:当用户翻转到上下(从肖像)时,标签会变换180,也会翻转过来(仍然面向主页按钮[重要])

但是

当我将其旋转回"纵向"时,标签将保持翻转旋转状态,而不会停留在主页按钮上。这就是我需要帮助的地方。。。。

这是我的代码:

#define degreesToRadian(x) (M_PI * (x) / 180.0)
...
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    TranslateLabel.transform = CGAffineTransformMakeRotation(degreesToRadian(180));
}

无论方向如何,您都要将其倒置旋转。如果您希望它根据方向进行不同的旋转,则必须执行以下操作:

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
  switch(toInterfaceOrientation){
    case UIInterfaceOrientationPortrait:
      TranslateLabel.transform = CGAffineTransformIdentity;
      break;
    case UIInterfaceOrientationPortraitUpsideDown:
      TranslateLabel.transform = CGAffineTransformMakeRotation(degreesToRadian(180));
      break;
  }
}

这样,当设备倒置时,它会将标签倒置,当设备处于纵向时,它将使标签恢复正常。

我认为您希望打开toInterfaceOrientation,如果方向为UIInterfaceOrientationPortraitUpsideDown,则按照上面的方式设置变换,如果方向是UIInterfaceOrientationPortrait,则设置为CGAffineTransformIdentity。(这假设您不允许旋转到其他方向。)

最新更新