ios - 在 Swift ios 中将方向更改为横向模式时隐藏底部表格 View

标签 ios swift orientation nslayoutconstraint

我有一个 UIView 和一个 UITableView 在纵向模式下以相同的高度共享屏幕。

现在,当方向更改为横向模式时,如何隐藏表格 View 并用 UIView 填充整个屏幕。并以纵向模式恢复 UITableView 和 UIView。

提前致谢。

最佳答案

我建议你在 ViewController 中实现 viewWillTransitionToSize

var landscapeViewFrame = CGRect()
var landscapeTableViewFrame = CGRect()
var portraitViewFrame = CGRect()
var portraitTableViewFrame = CGRect()

override func viewDidLoad() {
    super.viewDidLoad()
    landscapeViewFrame = CGRectMake(0, 0, view.frame.width / 2, view.frame.height)
    landscapeTableViewFrame = CGRectMake(view.frame.width, 0, view.frame.width / 2, self.view.frame.height);
    portraitViewFrame = view.bounds
    portraitTableViewFrame = CGRectMake(0,0,0,0);
}

override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
    super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator)
    let isPortrait = (size.height > size.width);
    yourView.frame = isPortrait ? portraitViewFrame : landscapeViewFrame
    yourTableView.frame = isPortrait ? portraitTableViewFrame : landscapeTableViewFrame
    yourTableView.hidden = isPortrait
}

viewWillTransitionToSize 通知您的 viewController View 框架将要更改。 UIViewControllerTransitionCoordinator 包含有关动画的信息,例如持续时间/是否有动画。

更新现在 swift 。 基本思路:先计算指定帧。在设备旋转发生变化时,调用 viewWillTransitionToSize 并可以设置 View 的框架。如前所述,您可能需要动画来使一切看起来流畅

关于ios - 在 Swift ios 中将方向更改为横向模式时隐藏底部表格 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32452185/

相关文章:

swift - RxSwift API 响应

ios - 方向横向 -> 纵向不起作用

ios - 当方向改变时,效果不适用(swift3)

iphone - 为什么 iOSOpenDev 找不到 LAActivator.h?

ios - 打开 ViewController 时出错

javascript - iOS Safari 顶部和底部栏问题

ios - Swift 4 中的 Void() 在 PromiseKit 中意味着什么?

swift - 二元运算符不能应用于int和int类型的操作数? swift 3

swift - SearchBar 显示错误的事件

ios - 如何在 Beta 3 中设备旋转时正确处理自定义键盘