diff --git a/docs/Development-Plan.md b/docs/Development-Plan.md index 18cbedd..499ded2 100644 --- a/docs/Development-Plan.md +++ b/docs/Development-Plan.md @@ -288,7 +288,7 @@ Contract Design Plan(本文档) ##### 1.E 集成 + 烟雾测试 - [x] **1.14.a** AppIcon:从 `docs/res/Images.xcassets/AppIcon-1.appiconset` 拷贝 9 个 png + Contents.json 到 `ylgamehall/Assets.xcassets/AppIcon.appiconset`,替换 Xcode 默认空模板。已实测 BuildProject 通过。actool 3 个 warning(iPad 76 / 83.5 / 1024 缺失)暂不处理,iPad 会自动用 iPhone 缩放,1024 是 App Store 上架要求(企业签不强制);待 Phase 10 上线前 polish 时补齐 -- [x] **1.14.b** LaunchScreen:把 `docs/res/Res/Default-568h@2x~iphone.png` 拷到 `ylgamehall/Assets.xcassets/SplashImage.imageset`(universal idiom,仅 @2x 物理文件 29708 字节 640×1136 竖图);改写 `LaunchScreen.storyboard` 为单一 UIImageView 全屏铺满(contentMode = .scaleAspectFill,背景 .black,四边约束到 superview)。注:竖图在横屏设备上会被 aspectFill 裁剪上下,启动只显示 0.x s 接受此折衷,Phase 10 polish 时再考虑出一张专门的横屏素材。BuildProject 通过 +- [x] **1.14.b** LaunchScreen:源素材 `docs/res/Res/Default-568h@2x~iphone.png` 是 CgBI PNG,物理 640×1136 但画面内容是"横躺"在竖向容器里(msext 旧 LaunchImage 系统依赖 device orientation 自动旋转);现代 LaunchScreen.storyboard 没有这个魔法,直接显示会看到躺倒画面。处理:用 `sips -r -90` 一次性把素材逆时针旋转 90° 输出为标准 PNG(去 CgBI),物理像素 1136×640,存到 `ylgamehall/Assets.xcassets/SplashImage.imageset/SplashImage@2x.png`(universal idiom)。storyboard 用单一 UIImageView 全屏铺满,`contentMode = scaleAspectFit`,背景 `.black`,四边约束到 superview。aspectFit 在比 16:9 更宽的现代横屏 iPhone 上左右补黑边(黑底无违和),保画面完整不裁切 logo。WebContainer 的 SplashOverlay 用同款 contentMode,避免启动 → 容器视觉过渡时跳变。BuildProject 通过 - [x] **1.14.c** `LobbyZipUpgrader` 加 progress 回调 - `upgradeIfNeeded(resolved:onProgress:) async throws -> Outcome`,`onProgress: @escaping @Sendable (Double) -> Void` 默认 no-op 报告 0.0…1.0 - 文件内私有 `DownloadProgressDelegate: URLSessionDownloadDelegate, @unchecked Sendable`,实现 `didWriteData:totalBytesWritten:totalBytesExpectedToWrite:`;通过 `session.download(from:delegate:)` 注入 @@ -800,7 +800,7 @@ H5 调 `OpenurlTitleData` 打开弹层 WebView,弹层内 H5 用 `window.settin - [x] 1.12 LocalVersionReader(version.xml 解析 + ATS 全局放行) - [x] 1.13 LobbyZipUpgrader(actor,原子 rename 升级;端到端实测 260→261) - [x] 1.14.a AppIcon 替换 Xcode 默认空模板(iPad / 1024 缺失留 Phase 10 polish) -- [x] 1.14.b LaunchScreen 改启动图(SplashImage 全屏 scaleAspectFill,竖图横屏裁剪折衷) +- [x] 1.14.b LaunchScreen 改启动图(素材逆时针旋转 90° → 物理 1136×640,scaleAspectFit + 黑底左右补边) - [x] 1.14.c LobbyZipUpgrader 加 progress 回调(URLSessionDownloadDelegate,0.0…1.0) - [x] 1.14.d WebContainerViewController(SplashOverlay + 16:9 letterbox + 启动流水线 + 三种 alert) - [x] 1.14.e WebView didFinish 后 0.3s 淡出 splash + removeFromSuperview diff --git a/ylgamehall/Assets.xcassets/SplashImage.imageset/SplashImage@2x.png b/ylgamehall/Assets.xcassets/SplashImage.imageset/SplashImage@2x.png index beb69b4..1e011e5 100644 Binary files a/ylgamehall/Assets.xcassets/SplashImage.imageset/SplashImage@2x.png and b/ylgamehall/Assets.xcassets/SplashImage.imageset/SplashImage@2x.png differ diff --git a/ylgamehall/Base.lproj/LaunchScreen.storyboard b/ylgamehall/Base.lproj/LaunchScreen.storyboard index d651be4..206ab88 100644 --- a/ylgamehall/Base.lproj/LaunchScreen.storyboard +++ b/ylgamehall/Base.lproj/LaunchScreen.storyboard @@ -15,7 +15,7 @@ - + @@ -35,6 +35,6 @@ - + diff --git a/ylgamehall/Source/WebView/WebContainerViewController.swift b/ylgamehall/Source/WebView/WebContainerViewController.swift index 93ca307..a23ab3c 100644 --- a/ylgamehall/Source/WebView/WebContainerViewController.swift +++ b/ylgamehall/Source/WebView/WebContainerViewController.swift @@ -248,7 +248,11 @@ private final class SplashOverlay: UIView { super.init(frame: .zero) backgroundColor = .black - imageView.contentMode = .scaleAspectFill + // 与 LaunchScreen.storyboard 同款 contentMode:素材是 1136×640 横屏画面, + // 在更宽的现代横屏设备上用 scaleAspectFit 左右补黑边(黑底统一), + // 避免 scaleAspectFill 把 logo 上下裁切;同时确保 LaunchScreen → WebContainer + // 视觉过渡时不出现裁切方式跳变。 + imageView.contentMode = .scaleAspectFit imageView.image = UIImage(named: "SplashImage") imageView.clipsToBounds = true imageView.translatesAutoresizingMaskIntoConstraints = false