有没有办法在iPhone中强制改变界面方向?

| 我知道如何允许/禁止使用旋转方向
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
但是,我现在遇到的问题是手机可能是纵向的(或者倒置的),并且在某个时候我想旋转屏幕,就像用户旋转到横向一样。在这一点上,我不想自动旋转工作了。我想强制界面方向保持横向。有没有办法做到这一点?我可能可以找出关闭自动旋转的技巧,但是首先我不知道如何强制旋转。 这是我想做的事情: 该应用程序可以旋转到所有方向。一切正常。 发生事件。 现在,自动旋转仅适用于landscapeleft和landscaperight。此外,如果用户纵向或纵向倒置,我会以编程方式旋转为横向,以将用户锁定为该方向。 为了使事情变得更棘手,我想在强制旋转之前弹出一个
UIAlertView
(我知道该怎么做),让用户知道发生了什么,我想在alertView后面进行屏幕旋转而不是alertView。这有可能吗? 谢谢。     
已邀请:
        针对您的情况的最佳解决方案是通知用户将其转到横向,并暂停程序直到用户转向。然后,当用户旋转设备时,您可以处理委托方法并开始以横向模式显示屏幕。此方法已在许多应用程序商店应用程序中得到处理,并且看起来它是使应用程序在应用程序商店中获得批准的最佳方法之一。我希望这是有道理的。     
        
- (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];

     }
}
并在事件中添加该通知     
        你不能。至少不是苹果允许的方式。自动旋转被设计为在整个应用程序中都相同。您可以创建用于手动旋转视图的代码,但是就UIDevice而言,您将处于同一方向。     
        根据Apple的说法,如果您不希望设备方向旋转API提供默认行为:   您可以控制:         您的应用支持的方向   屏幕上如何在两个方向之间旋转动画。    我读这本书的方式是“您可以控制这两个东西中的任何一个,但别无其他”或“您只能控制这两个东西。” 我在文档中没有看到任何明确告诉您如何“强制”更改方向的内容。所有这些都由设备处理,因此对于手持设备的人来说似乎更加自然和友好。那有意义吗? 有关旋转更改,请参见此处的文档: http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/RespondingtoDeviceOrientationChanges/RespondingtoDeviceOrientationChanges.html 最后,我想说这是不可能的,而且,它不会被苹果公司认可。我对Praveen的答案投了赞成票,因为我认为您可能需要为尝试做的事情考虑其他方法。     
        是的,您可以这样做。您要做的是在-(void)viewwillappear方法中,只需包含以下代码
if (self.interfaceOrientation == <current orientation>) {
        [[UIDevice currentDevice] performSelector:NSSelectorFromString(@\"setOrientation:\") withObject:(id)<to which orientation you want to change.>];
    }
它将解决您的问题     

要回复问题请先登录注册