首页 文章

UISplitViewController - 防止iPhone 6 plus上的横向分割

提问于
浏览
3

我在我的应用程序中使用UISplitViewController . 这在iPad上可以很好地工作,其中主要和次要总是可见,并且它在大多数iPhone上工作得很好,它像UINavigationController一样 .

在iPhone 6和6S上,分割视图就像是纵向的iPhone,就像风景中的iPad一样 . 这种景观分裂导致了我的问题,我想避免它 .

有没有办法阻止UISplitViewController在iPhone 6环境中显示主控制器和辅助控制器?我只想让它显示辅助控制器,就像它对其他iPhone一样 .

谢谢 .

2 回答

  • 2

    我能够通过继承UISplitViewController然后覆盖特征集合来执行此操作,以在设备不是iPad时返回紧凑的水平尺寸类 . 我知道这些天检查界面习语是一种虚假的做法,但我不知道怎么做 .

    我只是将这个方法添加到我的UISplitViewController子类中:

    -(UITraitCollection *)traitCollection {
        if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
            return [super traitCollection];
        } else {
            return [UITraitCollection traitCollectionWithHorizontalSizeClass:UIUserInterfaceSizeClassCompact];
        }
    }
    

    任何有关更好的方法的建议当然是受欢迎的 .

  • 3

    这是Swift中的相同答案,但也有一个修复,其中垂直大小类在手机横向错误:

    override var traitCollection: UITraitCollection {
        if UI_USER_INTERFACE_IDIOM() == .pad {
                return super.traitCollection
        } else {
            let horizontal = UITraitCollection(horizontalSizeClass: .compact)
            let vertical = UITraitCollection(verticalSizeClass: super.traitCollection.verticalSizeClass)
            return UITraitCollection.init(traitsFrom: [horizontal, vertical])
        }
    }
    

相关问题