mycode/myApp/HaruDanim/Shared/SymbolCompat.swift
songyc macbook 5b526fa650 feat(compat): iOS 하한 18.0 인하 — 글라스 버블 머티리얼 폴백·사용자 심볼 안전 렌더·Release 인라이너 크래시 우회
- 배포 타깃 26.0→18.0 (앱·위젯. 워치 10.0 불변)
- RadialNavigationView: glassEffect 계열을 @available(iOS 26) 선언 격리 + 18 머티리얼 원 폴백 (배치·연출 동일)
- DiaryZoomContainer.Coordinator → 비제네릭 톱레벨 DiaryZoomCoordinator + AnyView 소거 (하한 18 Release wholemodule에서 swift-frontend SILPerformanceInliner 무한 재귀 크래시 실측·우회)
- Image(safeSymbol:)/SymbolCompat: 카탈로그의 상위 OS 전용 심볼(18 기준 3개)이 교차 기기에서 빈 아이콘이 되지 않게 사용자 심볼 렌더 48곳+워치 7곳 폴백
- -symbolAuditDump 검증 인자 추가, iOS 18.5 시뮬 QA(빌드·radial 폴백·일기 줌·progressSelfTest 49 ALL PASS)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NNxA172hNDRpDsJ2qztKPf
2026-08-11 16:31:40 +09:00

30 lines
1.2 KiB
Swift

//
// SymbolCompat.swift
// Haru_Danim
//
// SF (1.4 iOS 18 ).
// OS (: SF 7 broom.fill) ,
// 26 iCloud iOS 18 ( watchOS)
// Image(systemName:) . (·)
// ( ) .
// · (WatchSymbolCompat
// ).
//
import SwiftUI
import UIKit
enum SymbolCompat {
/// OS
static func safe(_ name: String) -> String {
UIImage(systemName: name) != nil ? name : "questionmark.circle.fill"
}
}
extension Image {
/// OS
init(safeSymbol name: String) {
self.init(systemName: SymbolCompat.safe(name))
}
}