【问题标题】:Rotating only certain views specific ways when dealing with tab controllers处理选项卡控制器时仅以特定方式旋转某些视图
【发布时间】:2011-12-17 03:06:04
【问题描述】:

我有一个带有许多 (4) 不同视图的标签栏控制器。我希望能够仅将我的一个视图旋转到 landScapeRight 或 LandscapeLeft (所以没有纵向或倒置)。其他的只能是纵向的或倒置的。我在某处读到,对于选项卡控制器,所有子视图都需要在方法 shouldAutoRotateToInterfaceOrientation 中返回 YES:我已经完成了这个并且一切正常,但我似乎只能在全有或全无的情况下得到它,这意味着它们要么全部所有旋转或根本不旋转。 如果有人对如何解决这个问题有任何想法或建议,将不胜感激。

提前谢谢你!

【问题讨论】:

    标签: objective-c ios xcode model-view-controller views


    【解决方案1】:

    我假设您正在使用 UITabBarController 的子类来获取自动旋转行为。如果你想获得独立的旋转行为,你必须走仿射变换路线。这有点痛苦,但可行。

    【讨论】:

    • 与为横向和纵向分别制作一个单独的视图相比,这有多大的痛苦,它是否比痛苦更小?谢谢!
    • 只是有点乏味。我的标准处理方式是注册通知中心收听UIDeviceOrientationDidChangeNotification;通常这样做的好地方是在 viewDidLoad;在这种情况下,还要删除 viewDidUnload 中的观察者。然后我实现了一个receivedRotate: 回调来处理方向变化。在那里,您需要检查当前方向并按照 Clafou 的指示对视图应用变换;您还需要设置视图的边界,以便它们适合该方向。
    【解决方案2】:

    编辑(我误读了您的问题):我认为您不能独立旋转子视图。

    【讨论】:

    • 你确定这个 Clafou 吗?我只是在确定,所以我不会浪费时间试图弄清楚。谢谢!
    • 我的意思是,当您以非全有或全无的方式更改设备的方向时,我不相信您可以获得免费的自动(和动画)旋转行为。您始终可以通过其转换属性自己旋转各个视图,例如subView.transform = CGAffineTransformMakeRotation(M_PI / 2);
    • 此外,自动旋转会调整它旋转的视图的大小,因此您必须自己调整子视图的大小。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多