-
[SwiftUI] ๋๋ฐ์ด์ค์ width, height ๊ตฌํ๊ธฐiOS 2023. 8. 3. 14:18
SwiftUI์์ ๋๋ฐ์ด์ค์ ์ฌ์ด์ฆ (width, height)๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ 2๊ฐ์ง๊ฐ ์๋ค.
1. GeometryReader ์ฌ์ฉํ๊ธฐ
import SwiftUI struct ContentView: View { var body: some View { GeometryReader { geometry in ZStack { Color .yellow .frame( width: geometry.size.width, height: geometry.size.height ) VStack { Text("Width \(geometry.size.width)") Text("Height \(geometry.size.height)") } } } } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } }
GeometryReader์์ height๋ safeArea๋ฅผ ์ ์ธํ ๋ถ๋ถ์ ๋ํ๋ธ๋ค.
safeArea๋ ์ฌ์ด์ฆ๊ฐ ์๋๋ผ EdgeInsets์ด๊ธฐ ๋๋ฌธ์ด๋ค!
๋ง์ฝ safeArea๋ฅผ ํฌํจํ ๋ชจ๋ ์์ญ์ ๋๋น, ๋์ด๋ฅผ ์๊ณ ์ถ๋ค๋ฉด, edgesIgnoringSareArea(.all)์ ์ฌ์ฉํ๋ฉด ๋๋ค.
struct ContentView: View { var body: some View { GeometryReader { geometry in ZStack { Color .yellow .frame( width: geometry.size.width, height: geometry.size.height ) VStack { Text("Width \(geometry.size.width)") Text("Height \(geometry.size.height)") } } } .edgesIgnoringSafeArea(.all) } }
๋๋ก๋ ๋๋ฐ์ด์ค ํฌ๊ธฐ๋ฅผ ๋ฏธ๋ฆฌ ์์์ผ ํ ๋๊ฐ ์๋ค. ์ด ๋๋ UIScreen์ ์ฌ์ฉํ๋ฉด ๋๋ค.
2. UIScreen ์ฌ์ฉํ๊ธฐ
import SwiftUI struct ContentView: View { var body: some View { GeometryReader { geometry in ZStack { Color .yellow .frame( width: UIScreen.main.bounds.size.width, height: UIScreen.main.bounds.size.height ) VStack { Text("Width \(UIScreen.main.bounds.size.width)") Text("Height \(UIScreen.main.bounds.size.height)") } } } } } struct ContenttView_Previews: PreviewProvider { static var previews: some View { ContentView() } }
๊ทธ๋ผ ์ด๋ค ์ํฉ์์ GeometryReader๋ฅผ ์ฌ์ฉํ๊ณ , ์ด๋ค ์ํฉ์์ UIScreen์ ์ฌ์ฉํด์ผํ ๊น?
import SwiftUI struct ContentView: View { var body: some View { VStack { VStack { GeometryReader {geometry in VStack (alignment: .leading){ Text("View 1").bold() Text("Screen Width: \(geometry.size.width)") Text("Screen Height: \(geometry.size.height)") } .padding() .background(Color.green) .foregroundColor(Color.white) } } VStack { GeometryReader {geometry in VStack (alignment: .leading){ Text("View 2").bold() Text("Screen Width: \(geometry.size.width)") Text("Screen Height: \(geometry.size.height)") } .padding() .background(Color.red) .foregroundColor(Color.white) } } .frame(width: 250, height: 250) VStack { let screenSize = UIScreen.main.bounds.size GeometryReader {geometry in VStack (alignment: .leading){ Text("Screen Size").bold() Text("Screen Width: \(screenSize.width)") Text("Screen Height: \(screenSize.height)") } .padding() .background(Color.red) .foregroundColor(Color.white) } } .frame(width: 250, height: 250) } } } struct ContenttView_Previews: PreviewProvider { static var previews: some View { ContentView() } }
View1์์๋ GeometryReader๋ฅผ ์ฌ์ฉํด์ ์์ ๋ทฐ์์ ์ ๊ณต๋ ํฌ๊ธฐ๋ฅผ ํ์ธํ๋ค.
View2์์๋ GeometryReader๋ฅผ ์ฌ์ฉํ์ง๋ง, ์ด ๊ฒฝ์ฐ ์์ ๋ทฐ์ ํฌ๊ธฐ๋ ํ๋ ์์ ์ํด ๊ณ ์ ๋๋ค. ๊ทธ๋์ Width์ Height๊ฐ 250์ธ ๊ฒ์ ํ์ธํ ์ ์๋ค.
View1, View2 ๋ชจ๋ GeometryReader๋ฅผ ์ฌ์ฉํ์ง๋ง ๋ค๋ฅธ ํฌ๊ธฐ๋ฅผ ๊ฐ์ ธ์จ๋ค.
ํ์ง๋ง UIScreen.main.bounds๋ฅผ ์ฌ์ฉํ๋ฉด, ํ๋ ์ ๊ฐ์ ์ค๋ Screen Width, Height๊ฐ ์ผ์ ํ๊ฒ ๋์ค๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์ํฉ์ ๋ฐ๋ผ ์ ์ ํ ๊ฒ์ ์ ํํด์ ์ฌ์ฉํ๋ฉด ๋๋ค.
'iOS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SwiftUI] DragGesture (0) 2023.08.04 [iOS] Cocoapods ์ค์น ๋ฐ ์ฌ์ฉ๋ฒ (0) 2023.05.30 [iOS] Compiling for iOS 11.0, but module 'ComposableArchitecture' has a minimum deployment target of iOS 13.0 ์ค๋ฅ ํด๊ฒฐ (0) 2023.05.17 [iOS] Swift Package Manager (SPM) ์์ฑํ๊ธฐ (0) 2023.05.16 [iOS] Swift Package Manager (SPM) (0) 2023.05.11