🌚

Kam's Online Notebook


输出 Framework 还需提高 UI 适应性

先前输出 Framework 的记录文章里面漏了一点,就是 UI 在各设备/方向上的适应性。测试 demo 一直勾选 Requires full screen 的选项,导致一直未能发现在 iPad 上存在分屏/旋转的异常情况。

ISSUES

0x01

SDK 接手过来就是限定要在竖屏页面使用的,毕竟人脸识别的 UI 还是竖屏比较自然。所以在很多页面上关闭了自动旋转并指定了支持的方向:

- (BOOL)shouldAutorotate {
    return NO;
}

- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskPortrait;
}

然而这在 App 支持在 iPad 上分屏的情况下没有任何限制能力。

0x02

接入方的 AppDelegate 如果返回只 support landscape,上面的代码也有麻烦:

- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
	return UIInterfaceOrientationMaskLandscape;
}

这种情况下,UIAlertController-shouldAutorotate 返回 YES,会出现由于两个支持的方向没有交集而崩溃。这种情况最好能让接入方兼容一下,读取 SDK 的标记,返回 SDK 需要的方向。而这次显然不行,因为接入方说这个是引擎的代码,游戏接入升级引擎的成本较大。只能自己去 hook 宿主的 application:supportedInterfaceOrientationsForWindow: 方法。

🚩准备整理一个 UI 编写指南。

EOF

— Aug 26, 2021