使用自动布局保持相同的方向

时间:2014-10-26 09:06:11

标签: ios autolayout

当界面方向发生变化时,如何独立于其他视图保持视图的方向完全不变?

例如,如果我在纵向模式下有一个高蓝色视图,我希望当界面切换到横向模式时视图保持相同的方向。如果除了这个视图之外还有其他任何视图,其他视图应该像往常一样重新定向,并且状态栏也应该重新定向。唯一不应该重新定向的观点是这种蓝色视图。

Expected behavior

到目前为止我所能做的就是使用自动布局调整大小并重新调整视图的方向,这是我不想发生的事情。

Actual behavior

2 个答案:

答案 0 :(得分:0)

- (BOOL)shouldAutorotate;
- (NSUInteger)supportedInterfaceOrientations;

这应该对你有帮助。

您也可以尝试使用

- (void)viewWillAppear:(BOOL)animated {
    [[UIDevice currentDevice] setValue:@(UIInterfaceOrientationLandscapeLeft) forKey:@"orientation"];
}

答案 1 :(得分:0)

您是否尝试重写NavigationController类? 在那里,实施supportedInterfaceOrientations方法。

-(NSUInteger)supportedInterfaceOrientations
{
    UIViewController *vc = [[self viewControllers] lastObject];
Class clsSupportsSpecificOri = NSClassFromString(@"REQUIRED_CLASS");

if ([vc isKindOfClass:clsSupportsSpecificOrientation]))  {

    return UIInterfaceOrientationMaskLandscapeLeft;//Set your required orientation

}
else {
    return UIInterfaceOrientationMaskAll;
}

}

这可能对您有所帮助。每次导航发生时都会调用supportedInterfaceOrientation方法。