๐ง iPhone Safe Area ํฌ๊ธฐ ๊ฐ์ ธ์ค๊ธฐ
Safe area์ ๋ฐฐ๊ฒฝ์์ ์ง์ ํ๊ณ ์ถ๋ค๋ฉด, ๋ฉ์ธ View์ BackgroundColor๋ฅผ ์ง์ ํด์ฃผ๋ฉด ๋๋ค.
ํ์ง๋ง ์๋ ํ๋ฉด์ฒ๋ผ ์/ํ๋จ์ด ๋์์ ์ ์ฉ์ด ๋์ด๋ฒ๋ฆฐ๋ค.
๋๋ ์๋์ชฝ๋ง ์ ์ฉํ๊ณ ์ถ์ด์, UIView๋ฅผ ์ฝ๋๋ก ๊ฐ๊ฐ ์์ฑํด์ addSubview()๋ก ์ถ๊ฐํด์ฃผ๋ ๋ฐฉ์์ผ๋ก ํด๊ฒฐ์ ํ๋ค.
(๋ ์ข์ ๋ฐฉ๋ฒ์ด ์๋์ง๋ ์ฐพ์๋ณด๋ ์ค...)
๊ทธ๋ฐ๋ฐ ๋ ธ์น๊ฐ ์๋ ๋์์ธ์ ์์ดํฐ์ ํ๋จ Safe Area๊ฐ ์์ผ๋ฏ๋ก,
ํ์ฌ ํ๋ฉด์์ Safe Area์ ํฌ๊ธฐ๋ฅผ ๋ฐ์์์ ์ฒ๋ฆฌํด์ค์ผ ํ ํ์๊ฐ ์๋ค.
๊ทธ๋์ ์์ดํฐ์ ์/ํ๋จ Safe Area์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ ธ์ ํ์ฉํ ์ ์๋ ์ฝ๋๋ฅผ ์ฐพ์๋ณด์๋ค.
if #available(iOS 13.0, *) {
let window = UIApplication.shared.windows.first
let top = window?.safeAreaInsets.top
let bottom = window?.safeAreaInsets.bottom
print("top : \(String(describing: top))")
print("bottom : \(String(describing: bottom))")
} else if #available(iOS 11.0, *) {
let window = UIApplication.shared.keyWindow
let top = window?.safeAreaInsets.top
let bottom = window?.safeAreaInsets.bottom
print("top : \(String(describing: top))")
print("bottom : \(String(describing: bottom))")
}
์ถ์ฒ: https://es1015.tistory.com/457
์ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ์ด์ฆ๋ฅผ ์ต์ ๋ ํ์ ์ผ๋ก ์ ๊ฐ์ ธ์ฌ ์๋ ์์๋ค.
๊ทธ๋ฐ๋ฐ, Xcode์์ ์๋์ ๊ฐ์ ๊ฒฝ๊ณ ์ฐฝ์ด ํ์๋์๋ค.
'windows' was deprecated in iOS 15.0: Use UIWindowScene.windows on a relevant window scene instead
"UIApplication.shared.windows" ๋ iOS15๋ถํฐ ์ฌ์ฉ์ด ์ค์ง๋์๋ค๋ ๋ง์ธ๊ฐ๋ณด๋ค.
์์ผ๋ก๋ "UIWindowScene.windows"๋ฅผ ์ฌ์ฉํ๋ผ๊ณ ์น์ ํ ์๋ ค์ฃผ๊ธฐ๊น์ง ํ๊ณ ์๋ค.
๊ทธ๋์ ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ ํด์ ์ฌ์ฉํ๋ค.
let scenes = UIApplication.shared.connectedScenes
let windowScene = scenes.first as? UIWindowScene
if let hasWindowScene = windowScene {
print("top: ", hasWindowScene.windows.first?.safeAreaInsets.top ?? 0.0)
print("bottom: ", hasWindowScene.windows.first?.safeAreaInsets.bottom ?? 0.0)
}
์ต์ ๋ ๊ฒฝ๊ณ ์ฐฝ์ด ๋จ์ง ์๊ฒ ํ๋ ค๊ณ ์ ์ํ ์ฝ๋์์๋ if-let๊ณผ ์ฝ์๋ ์ฑ ๋ฑ์ ์ฌ์ฉํ๊ธด ํ์ง๋ง,
์ฑ์์ UIWindowScene์ด ์๋ ๊ฒฝ์ฐ๋ ๊ฑฐ์ ์์ ๊ฒ์ด๊ธฐ ๋๋ฌธ์.. ๊ฐ์ ์ธ๋ํ์ ์ฌ์ฉํด๋ ๊ด์ฐฎ์ง ์์๊น?? ์ถ๋ค.
'iOS(macOS) > Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[iOS/Swift] NavigationController ๋ค๋ก๊ฐ๊ธฐ ๋ฒํผ ํ์ดํ ์์ ํ๊ธฐ (0) | 2022.10.27 |
---|---|
[iOS/Swift] Safe Area๋ฅผ ์์น ํ๋ ๋ฐฉ๋ฒ (2) | 2022.09.30 |
[iOS/Xcode 13] Rename - Outlet ๋ณ์ ์ด๋ฆ ์์ ๋ฐฉ๋ฒ (0) | 2022.08.15 |
[iOS/Xcode 13] ์๋ฎฌ๋ ์ดํฐ ํค๋ณด๋ ๋ณด์ด๊ฒ ํ๋ ๋ฒ (0) | 2022.08.15 |
[Swift/๋ฌธ๋ฒ] ๊ณ ์ฐจํจ์ (Higher-order function) (0) | 2022.08.11 |