禁用单个UIView的自动旋转

Arc*_*ite 6 iphone cocoa-touch uiviewcontroller uikit

好吧,这似乎应该相对简单,但我一直在谷歌搜索一小时的大部分时间,似乎无法找到我需要的东西.

我有一个视图控制器,它有几个不同的部分:背景视图,标题视图和几个按钮.现在,我希望标题和按钮正确自动旋转(当我从shouldAutorotateToInterfaceOrientation返回YES时,它们会这样做),但在任何情况下都不应该旋转背景视图.有没有正确的方法来做到这一点?

Hen*_*son 5

如果您不希望临时旋转背景视图,然后将背景更改为具有正确的方向,则需要关闭视图的自动旋转.关于它没有两种方法.

您需要自己处理按钮的旋转.您可以制作一个漂亮的布局或将它们放在例如Scrollview上,然后调整它.

无论哪种方式,你都需要添加一个观察者来自己旋转它,

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didRotate:)
                                                 name:UIDeviceOrientationDidChangeNotification object:nil];
Run Code Online (Sandbox Code Playgroud)

在didRotate中你可以调整大小,如果你愿意的话可以使用漂亮的动画过渡.

- (void) didRotate:(NSNotification *)notification {
 int ori=1;
    UIDeviceOrientation currOri = [[UIDevice currentDevice] orientation];
    if ((currOri == UIDeviceOrientationLandscapeLeft) || (currOri == UIDeviceOrientationLandscapeRight)) ori=0;
}
Run Code Online (Sandbox Code Playgroud)

希望能对你进行分类.如果导航栏或状态栏导致视图隐藏在顶部栏下方,则有一些方法可以解决这个问题.