我知道如何允许/禁止使用
旋转方向 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
然而,我现在遇到的问题是手机可能处于纵向(或倒置),并且在某些时候我想要旋转屏幕,就像用户旋转到横向一样。此时,我不想让自动旋转工作了。我想强制界面方向保持在横向。有没有办法做到这一点?我可能想出一个关闭自动旋转的黑客攻击,但是在第一时间强迫旋转我不知道该怎么做。
这是我正在尝试做的事情:
应用程序可以旋转到任何和所有方向。一切都很正常。
发生事件。
现在自动旋转仅适用于landscapeleft和landscaperight。此外,如果用户处于纵向或纵向倒置,我会以编程方式旋转到landscaperight以将用户锁定在该方向。
只是为了让事情变得棘手,我想在强制轮换之前弹出一个UIAlertView
(我知道该怎么做),让用户知道发生了什么,我想在alertView后面屏蔽旋转但不是alertView。这甚至可能吗?
感谢。
答案 0 :(得分:1)
针对您的情况的最佳解决方案是通知用户将其转为横向并暂停程序,直到用户转动方向。然后,当用户旋转设备时,您可以处理委托方法并开始以横向模式显示屏幕。许多应用程序商店应用程序已经处理了这种方法,看起来这是在应用程序商店中批准应用程序的最佳方法之一。我希望这是有道理的。
答案 1 :(得分:0)
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown || interfaceOrientation == UIInterfaceOrientationLandscapeRight || interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}
// orientation view swapping logic
- (void)didRotate:(NSNotification *)notification {
UIDeviceOrientation newOrientation = [[UIDevice currentDevice] orientation];
if (newOrientation != UIDeviceOrientationUnknown || newOrientation != UIDeviceOrientationFaceUp || newOrientation != UIDeviceOrientationFaceDown)
{
orientation = newOrientation;
}
// Write your orientation logic here
if ((orientation == UIDeviceOrientationLandscapeLeft || orientation == UIDeviceOrientationLandscapeRight))
{
// Clear the current view and insert the orientation specific view.
[self clearCurrentView];
[self.view insertSubview:yourLandscapeView atIndex:0];
} else if (orientation == UIDeviceOrientationPortrait || orientation == UIDeviceOrientationPortraitUpsideDown)
{
// Clear the current view and insert the orientation specific view.
[self clearCurrentView];
[self.view insertSubview:yourPortraitView atIndex:0];
}
}
并在事件中添加该通知
答案 2 :(得分:0)
你做不到。至少不是苹果允许的方式。自转旋转设计与整个应用相同。您可以制作手动旋转视图的代码,但就UIDevice而言,您将处于相同的方向。
答案 3 :(得分:0)
根据Apple的说法,如果您不想要设备方向旋转API提供的默认行为:
您可以控制:
- 您的应用支持的方向
- 如何在屏幕上设置两个方向之间的旋转动画。
我读到这个的方式是“你可以控制其中任何一个,但没有别的”或“你只能控制这两件事。”
我没有在文档中看到任何明确告诉您如何“强制”改变方向的内容。所有这一切都由设备处理,因为它对于持有设备的人来说看起来更自然和友好。这有意义吗?
请参阅此处有关轮换更改的文档:
最后,我想说这是不可能的,而且它不会被Apple批准。我投票赞成Praveen的答案,因为我认为你可能需要考虑采用不同的方法来做你想做的事情。
答案 4 :(得分:-2)
if (self.interfaceOrientation == <current orientation>) {
[[UIDevice currentDevice] performSelector:NSSelectorFromString(@"setOrientation:") withObject:(id)<to which orientation you want to change.>];
}
它将解决您的问题