【问题标题】:problem setting specified view to landscape mode将指定视图设置为横向模式的问题
【发布时间】:2011-03-23 14:23:47
【问题描述】:

我确实寻找了可能的答案,但没有找到。我的问题是我只希望我的应用程序中的一个视图(显示图像)同时处于纵向和横向模式,而其他视图仅处于纵向模式。

此视图作为其子视图添加到[[[UIApplication sharedApplication] delegate] window]

我在- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation中设置了返回YES

还有[self.view setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];- (void)viewDidLoad

但是当我转动设备时,视图不会旋转。请告诉我我哪里做错了或者还需要做什么。

【问题讨论】:

    标签: iphone landscape


    【解决方案1】:

    据我所知,子视图(例如您添加的那个)只有在拥有容器视图传递时才会发送消息说设备已旋转。如果您使用 UINavigationController 或 UITabBar 并将您的视图添加到它是为您完成的,但如果您将视图直接添加到窗口中,则不是。

    编辑:您可以使用 UIDeviceOrientationDidChangeNotification 和 NSNotificationCenter 来捕捉设备方向的变化。

    【讨论】:

    • 谢谢 Ben,我尝试将它添加到我的 [[[UIApplication sharedApplication] delegate] tabBarController].view 但它也不起作用。可能是因为 tabBarController 视图也是 window 的子视图?
    • 啊,抱歉我没说清楚。只有使用 - (void)setViewControllers:(NSArray *)viewControllers animated:(BOOL)animated 将其添加到选项卡栏控制器时,它才会正确自动旋转,而不是仅添加为子视图。我自己没有尝试过,但我认为在自定义视图控制器中捕获 UIDeviceOrientationDidChangeNotification 是一件好事。
    • 选择器方法应该怎么做?有什么方法可以调用来旋转视图吗?或者我必须使用 CGAffineTransformRotate 之类的代码来转换视图?
    猜你喜欢
    • 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
    相关资源
    最近更新 更多