在标签栏设置中只允许一个视图旋转

时间:2011-10-25 07:17:10

标签: objective-c ios cocoa-touch uitabbarcontroller uideviceorientation

我有一个带有四个不同视图的标签栏控制器。最近,我想将旋转仅用于我的一个观点。我在某处读到了对于制表符控制器,所有子视图都需要在方法YES中返回shouldAutoRotateToInterfaceOrientation:。我已经完成了这一切并且一切正常,但是,我只希望一个的视图进入横向模式,而不是全部。我似乎只能在一个全有或全无的情况下得到它,这意味着它要么全部旋转,要么都没有。

1 个答案:

答案 0 :(得分:1)

将此添加到仅支持纵向模式的VC:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    if (interfaceOrientation == UIDeviceOrientationPortrait ||  interfaceOrientation ==  UIDeviceOrientationPortraitUpsideDown) 
    {
        return YES;
    }
    return NO;
}

将此添加到支持横向的VC:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

    return YES;
}

以上意味着你需要4个VC来控制不是你想要的标签。 您可以做的是在mainVC中添加一个额外的布尔值,默认为NO。 然后,当您打开支持所有方向的特定视图时,您只需将该布尔值置于YES并执行以下代码:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

    if (myBoolThatAllowsAllOrientations)
    {
        return YES;
    }
    if (interfaceOrientation == UIDeviceOrientationPortrait ||  interfaceOrientation ==  UIDeviceOrientationPortraitUpsideDown) 
    {
        return YES;
    }
    return NO;
}