v1.1.1
๐ฏ Highlights
- ํ์ ์ ์ฑ
๊ฒฉ๋ฆฌ โ ๋ณ๋
UIWindow๋ฅผ ๋ง๋ค์ง ์๊ณ ํธ์คํธ ์ฑ keyWindow ์ ๋ผ๋ฒจ view ๋ง ์ง์ ์ฃผ์ ํฉ๋๋ค. iOS multi-window ํ์ ๊ฒฐ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ผ์ ๊ด์ฌํ์ง ์์, portrait ์ ๊ธ ํ๋ฉด์ด ํ๋ฆฌ๊ฑฐ๋ ์๋ ์ ์ฒดํ๋ฉด์ด ์ ๋จน๋ ํ๊ท๋ฅผ ๊ทผ๋ณธ ์ฐจ๋จํฉ๋๋ค. installAPI +enabledํ๋ผ๋ฏธํฐ โ 1ํ ์ ์ ๋ชจ๋ธ ๋ช ํํ. ๋๋ฒ๊ทธ ์ค๋ฒ๋ ์ด on/off ๋ฅผ ์ฌ์ฉ์ ์ค์ ํ ๊ธ์ ์ฐ๊ฒฐํ๋ฉด ์ฌ์์ ์ ์ ๊ฐ์ด ์ ์ฉ๋ฉ๋๋ค.- ์
์๋ฒ ๋ SwiftUI host ๊ฐ ๋ผ๋ฒจ์ ๊ฐ๋ก์ฑ๋ ํ๊ท ํฝ์ค โ ์
์ด
UIHostingController๋ฅผcontentView์๋ง add ํ ๊ฒฝ์ฐ ๋ผ๋ฒจ์ด SwiftUI rootView ์ด๋ฆ์ผ๋ก ๋ฐ๋์ด๋ฒ๋ฆฌ๋ ๋ฌธ์ ๋ฅผ ์ฐจ๋จํฉ๋๋ค.
โ ๏ธ Breaking changes
ScreenNameViewer.start(_:)โScreenNameViewer.install(enabled:_:)๋ก ์ด๋ฆ ๋ณ๊ฒฝScreenNameViewer.stop()public API ์ ๊ฑฐ โ 1ํ ์ค์น ๋ชจ๋ธ์ด๋ผ ๋ฐํ์ ์ข ๋ฃ API ๋ถํ์
๋ง์ด๊ทธ๋ ์ด์
// Before
ScreenNameViewer.start { config in
config.verticalPosition = .top
}
// After
ScreenNameViewer.install { config in
config.verticalPosition = .top
}
// ์ฌ์ฉ์ ์ค์ ํ ๊ธ๊ณผ ์ฐ๊ฒฐ
ScreenNameViewer.install(
enabled: UserDefaults.standard.bool(forKey: "debug_overlay_enabled")
) { config in
// ...
}enabled: false ๋ฉด swizzling ์์ฒด๊ฐ ์ผ์ด๋์ง ์์ต๋๋ค. ํ ๊ธ ๋ณ๊ฒฝ ํ ์ฑ ์ฌ์์ ์ ์ ๊ฐ์ด ์ ์ฉ๋ฉ๋๋ค(์ฌ์์์ ์ ์ฉ ์ฑ์ด ์ฒ๋ฆฌ).
๐ Bug fixes
- ์
contentView์๋ง add ๋UIHostingController๊ฐ ํ๋ฉด ๋จ์ VC ๋ก ์๋ชป ํ์ ๋์ด ๋ผ๋ฒจ์ด SwiftUI rootView ์ด๋ฆ์ผ๋ก ๋ฐ๋๋ ํ๊ท ์ฐจ๋จ (isScreenLevel๊ฐ๋ ๊ฐํ) - ํธ์คํธ ์ฑ์ด portrait ๋ก ์ ๊ทผ ํ๋ฉด์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ์ฉ ์ ๋๋ฐ์ด์ค๊ฐ ํ์ ํด๋ฒ๋ฆฌ๋ ํ๊ท ์ฐจ๋จ
- ํธ์คํธ ์ฑ ํ๋ ์ด์ด์ ์๋ ์ ์ฒดํ๋ฉด ์ ํ / ์ ์ฒดํ๋ฉด์์ ๋ค๋ก๊ฐ๊ธฐ ์ portrait ๋ณต๊ท๊ฐ ๋งํ๋ ํ๊ท ์ฐจ๋จ
๐ Internal / Refactor
OverlayWindow+OverlayViewController์ ๊ฑฐ โOverlayView(UIView) ํ ํด๋์ค๋ก ํตํฉSceneOverlay๊ฐ host keyWindow ๋ฅผ ์ถ์ ํ๊ณ keyWindow ๊ต์ฒด ์ ์๋ ์ด๋ (UIWindow.didBecomeKeyNotification)- ๋ชจ๋ฌ/์ํธ z-order ๋ ๋งค render ์ฌ์ดํด๋ง๋ค
bringSubviewToFront๋ก ์ ์ง - ๋ผ๋ฒจ ์์ญ ์ธ ๋ชจ๋ ํฐ์น๋
point(inside:with:) โ false๋ก ํต๊ณผ โ ํธ์คํธ ์ ์ค์ฒ ์ํฅ 0
โ Tests
68 tests passing. ์ ๊ท ํ๊ท ํ ์คํธ 2๊ฑด ์ถ๊ฐ:
testParentlessAppleHostIsNotScreenLevelโ ์ ์๋ฒ ๋ host ๊ฐ push ๋์ง ์์์ ํ๊ท ๋ฐฉ์งtestTouchPassthroughโ ๋ผ๋ฒจ view ๊ฐ ํธ์คํธ ํฐ์น๋ฅผ ๊ฐ๋ก์ฑ์ง ์์์ ํ๊ท ๋ฐฉ์ง
๐ RELEASE ๋น๋ ๊ฒฉ๋ฆฌ
- ๋ชจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฝ๋(swizzling, UIView ์์ฑ, NotificationCenter ๊ตฌ๋
, Tracker ์ธ์คํด์คํ)๋
#if DEBUG๋ณดํธ - public API ๋ณธ๋ฌธ ๋ชจ๋
#if DEBUG์ โ RELEASE ๋น๋์์ ๋น ํจ์๋ก ์ปดํ์ผ๋์ด ๋ฐํ์ ๋น์ฉ 0