【发布时间】:2016-06-25 05:35:27
【问题描述】:
我找到了this 问题,并尝试实施给出的解决方案。但是我遇到了问题。
我的初始视图控制器有两个容器视图,它们都有自己的视图控制器。我创建了一个分配给初始视图控制器的根视图控制器。此类中的代码如下所示。
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;
}
但是,当我运行它时,尺寸类不会像应有的那样响应。其中一个容器视图控制器将在横向和纵向模式下开始表现怪异,如下所示。
当我不分配 rootviewcontroller 时,它看起来像这样
有谁知道这里可能出了什么问题?为什么它没有像期望的那样改变尺寸等级。
编辑 就像@Muhammad Yawar Ali 在这里问的一样,是我设置的所有尺寸等级位置的屏幕截图。我对任何约束都没有警告或错误,因此这些屏幕截图包含更新后的视图。
我希望这能显示所需的一切。
编辑: 由于某种原因,我无法放入所有屏幕截图
【问题讨论】:
标签: ios swift ipad storyboard size-classes