gpt4 book ai didi

ios - 具有容器 View 的 iPad 纵向和横向模式的不同尺寸等级

转载 作者:搜寻专家 更新时间:2023-10-31 23:00:42 24 4
gpt4 key购买 nike

我找到了 this问题,我已经尝试实现已给出的解决方案。但是我遇到了一个问题。

我的初始 View Controller 有两个容器 View ,它们都有自己的 View Controller 。我创建了一个分配给初始 View Controller 的 Root View Controller 。此类中的代码如下所示。

class RootViewController: UIViewController {

var willTransitionToPortrait: Bool!
var traitCollection_CompactRegular: UITraitCollection!
var traitCollection_AnyAny: UITraitCollection!

override func viewDidLoad() {
super.viewDidLoad()
setupReferenceSizeClasses()
// Do any additional setup after loading the view.
}

override func viewWillAppear(animated: Bool) {
willTransitionToPortrait = self.view.frame.size.height > self.view.frame.size.width
}

override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
willTransitionToPortrait = size.height > size.width
}

func setupReferenceSizeClasses(){
let traitCollection_hCompact = UITraitCollection(horizontalSizeClass: .Compact)
let traitCollection_vRegular = UITraitCollection(verticalSizeClass: .Regular)
traitCollection_CompactRegular = UITraitCollection(traitsFromCollections: [traitCollection_hCompact, traitCollection_vRegular])

let traitCollection_hAny = UITraitCollection(horizontalSizeClass: .Unspecified)
let traitCollection_vAny = UITraitCollection(verticalSizeClass: .Unspecified)
traitCollection_AnyAny = UITraitCollection(traitsFromCollections: [traitCollection_hAny, traitCollection_vAny])
}

override func overrideTraitCollectionForChildViewController(childViewController: UIViewController) -> UITraitCollection? {
let traitCollectionForOverride = ((willTransitionToPortrait) != nil) ? traitCollection_CompactRegular : traitCollection_AnyAny

return traitCollectionForOverride;
}

但是,当我运行它时,大小类不会像它应该的那样响应。其中一个容器 View Controller 将开始在横向和纵向模式下表现得很奇怪,如下所示。

landscape mode portrait mode

当我不分配 rootviewcontroller 时,它看起来像这样 landscape mode portrait mode

虽然它在纵向模式下应该是这样的 portrait mode how it should look

有谁知道这里可能出了什么问题?为什么它没有按需要更改尺寸等级。

编辑就像@Muhammad Yawar Ali 在这里问的一样,这里是我设置的所有尺寸类别位置的屏幕截图。我没有关于任何约束的警告或错误,因此这些屏幕截图包含更新的 View 。

enter image description here enter image description here

我希望这显示了所需的一切。

编辑:由于某种原因,我无法放入所有屏幕截图

最佳答案

viewWillTransitionToSize 上,您还需要调用 super,以将事件传递给下一个响应者(您的 Root View Controller )...

override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator)
willTransitionToPortrait = size.height > size.width
}

关于ios - 具有容器 View 的 iPad 纵向和横向模式的不同尺寸等级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35915396/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com