当方向发生变化时,我对UIView进行了一些更改。这很好用。在已经切换电话方向后添加视图时出现问题。这导致没有调用任何旋转方法,因此没有给我机会进行更改。
可能在ViewDidLoad中处理此问题的正确方法是什么?我能够在那时检测到当前的方向吗?
请记住,我需要做一些小改动,所以我不想加载不同的笔尖或类似的东西
非常感谢你:)
编辑*只是为了清理:正如我所提到的,当设备方向改变时,视图甚至还没有被实例化。方向变为横向 - >用户单击显示另一个视图的按钮 - >这个新视图被创建并显示,但其默认定位是纵向 - >当显示视图时,我在willAnimateRotationToInterfaceOrientation方法中重新排列的元素位于错误的位置。
答案 0 :(得分:1)
通常我会在willAnimateToInterfaceOrientation方法中放置用户旋转设备时发生的动画(主要是操纵视图框)。在它的骨架形式中它看起来像这样:
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
duration:(NSTimeInterval)duration
{
//NSLog(@"willAnimateRotationToInterfaceOrientation: %d", toInterfaceOrientation);
if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation))
{
// portrait
}
else
{
// landscape
}
}
编辑:在我需要记住设备轮换以备将来使用的情况下,我在我的视图控制器类中设置一个名为currentOrientation(类型为int)的ivar,然后执行以下操作:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
//NSLog(@"shouldAutorotateToInterfaceOrientation: %d", toInterfaceOrientation);
if (toInterfaceOrientation == UIDeviceOrientationPortrait || toInterfaceOrientation == UIDeviceOrientationPortraitUpsideDown ||
toInterfaceOrientation == UIDeviceOrientationLandscapeLeft || toInterfaceOrientation == UIDeviceOrientationLandscapeRight)
{
currentOrientation = toInterfaceOrientation;
}
return YES;
}
然后在视图控制器中运行方法时,我知道设备所处的方向。