【问题标题】:Unlock orientation when viewing picture fullscreen全屏查看图片时解锁方向
【发布时间】:2016-06-02 12:06:35
【问题描述】:

我的UITableViewCell 中有一个UIImageView。当用户点击UIImageView 时,会从UIImageView 中显示[IDMPhotoBrowser](https://github.com/ideaismobile/IDMPhotoBrowser)。该应用程序仅是纵向的,但是,当在 IDMPhotoBrowser 中全屏查看照片时,我想让用户能够旋转到任何方向。

IDMPhotoBrowser 显示在 UITableViewCell's delegate 上。代表是普通的UIViewControllerUITableView。委托也包含在UINavigationController 中,而UITabBarController 中也包含该代理。我尝试了许多不同的解决方案,包括扩展IDMPhotoBrowser 并尝试添加添加对所有方向的支持的功能,我尝试在UITabBarControllerUINavigationControllerthe delegate UIViewController 上呈现IDMPhotoBrowser。我还尝试翻转位于UITabBarController 子类中的布尔值,然后在请求支持的方向的函数中引用该布尔值,这样支持的方向会随着应用程序呈现IDMPhotoBrowser 的时间而改变。没有任何效果。

除了用户全屏查看IDMPhotoBrowserAVPlayerViewController 时,需要将整个应用限制为仅纵向。

【问题讨论】:

  • 你找到解决办法了吗?

标签: ios swift uitableview uiimageview orientation


【解决方案1】:

创建一个 UINavigationController 父类,在您的 UINavigationController(parent) 中以这种方式覆盖这些方法:

override func shouldAutorotate() -> Bool {
    return true
}

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
    return self.topViewController.supportedInterfaceOrientations
}

在您想要轮换的 VC 中:

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
    return .All
}

在你的 VC 中你不想被轮换:

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
    return .AllButUpsideDown
}

然后在此导航控制器中推送(或设置为根 VC 等)您的浏览器或浏览器的父 VC。

【讨论】:

  • ViewController 仅在用户查看 IDMPhotoBrowser 时需要支持 UIInterfaceOrientationMask.All。这段代码是如何实现的?此代码始终支持所有方向。
  • 编辑了答案,继续使用导航控制器并将 ViewController 推送到该导航控制器中。
  • 所以你是说让UINavigationController 子类支持所有界面方向,然后让ViewController 只支持纵向,然后推IDMPhotoBrowser 并让它支持所有界面方向?我认为这可以作为 UIViewController 将其支持的界面方向与其 UINavigationController 相交,但是,IDMPhotoBrowser 是呈现的,而不是推送的。那么因为只支持肖像的ViewController会呈现IDMPhotoBrowser,IDMPhotoBrowser不会简单地继承VC的只支持肖像吗?
  • 我还尝试将 IDMPhotoBrowser 包装在 UINavigationController 中,然后呈现 UINavigationController 并解决了整个方向问题,但是 UIImageView 从 UITableViewCell 动画到全屏查看器的动画被破坏了。
  • 你也可以像在 navigationController 中那样做:覆盖 func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { return self.topViewController.supportedInterfaceOrientations } 在你的 VC 中有时你可以拥有一切,有时你只能拥有肖像等。
猜你喜欢
  • 1970-01-01
  • 2018-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-29
  • 1970-01-01
  • 2014-11-07
相关资源
最近更新 更多