提升iPad体验之 --- iPad适配分屏

适配分屏模式, 是提升iPad体验利器之一.
首先要了解这个系统类 UITraitCollection
顾名思义 特征集. 它封装了几乎所有当前window的特性.

我们需要先了解 SizeClass 中的 horizontalSizeClass 和 vericalSizeClass, 他们分别封装了所有设备的长宽SizeClass.
而这里又分为两种类型. RegularCompact.
常规状态和压缩状态. 入下图所示. 不同的长宽都对应不同的格式.

image

既然是分屏, 分屏就代表了多应用. 那么多应用的长宽, 也可以通过SizeClass表示. 如下图所示.



经过观察后发现, 原来我们只要通过判断水平方向的SizeClass就可以适配所有情况了!!!

  • 通过监听系统回调, 通知改变界面适配
- (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection {
    [super traitCollectionDidChange:previousTraitCollection];
}

  • 获取当前horizontalSizeClass去适配
    UITraitCollection *trait = appDelegate.window.traitCollection;
    switch (trait.horizontalSizeClass) {
        case UIUserInterfaceSizeClassUnspecified:
        case UIUserInterfaceSizeClassCompact: self.currentSplitDisplayMode = SHMDeviceSplitDisplayMode_CompactWidth; break;
        case UIUserInterfaceSizeClassRegular: self.currentSplitDisplayMode = SHMDeviceSplitDisplayMode_RegularWidth; break;
        default: break;
    }

  • 判断当前是否分屏
        if (@available(iOS 13.0, *)) return trait.userInterfaceLevel == UIUserInterfaceLevelElevated ;
        else return (trait.horizontalSizeClass == UIUserInterfaceSizeClassCompact || trait.verticalSizeClass == UIUserInterfaceSizeClassCompact);


摘自

UITraitCollection .
Adopting Multitasking Enhancements on iPad

你可能感兴趣的:(提升iPad体验之 --- iPad适配分屏)