Skip to content

Commit

Permalink
Create 250106_UIHostingController,_SwiftUI,_Dynamic_height.md
Browse files Browse the repository at this point in the history
  • Loading branch information
leeari95 committed Jan 6, 2025
1 parent 000ef24 commit f065b02
Showing 1 changed file with 45 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# 250106 UIHostingController, SwiftUI, Dynamic height


SwiftUI๋กœ ๋งŒ๋“  ๋ทฐ์˜ ๋†’์ด๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์ž.


1์›” 6์ผ (๊ธˆ)


# ํ•™์Šต๋‚ด์šฉ


- SwiftUI๋กœ ๋ทฐ๋ฅผ ๋งŒ๋“ค๊ณ  UIHostingController๋ฅผ ์ด์šฉํ•ด ๋ฐ”ํ…€ ์‹œํŠธ ํ˜•ํƒœ๋กœ ๋„์šฐ๋Š” ๋ฐฉ๋ฒ•์„ ํ•™์Šตํ–ˆ๋‹ค.
- ๋ฐ”ํ…€ ์‹œํŠธ์˜ ๋†’์ด๋ฅผ ์ฝ˜ํ…์ธ  ๋‚ด์šฉ์— ๋”ฐ๋ผ ๋™์ ์œผ๋กœ ์กฐ์ ˆํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ณ ๋ฏผํ–ˆ๋‹ค.
- SwiftUI ๋ทฐ์˜ ์‹ค์ œ ํฌ๊ธฐ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด `sizeThatFits`๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ ์šฉํ–ˆ๋‹ค.


# ๊ณ ๋ฏผํ•œ ์  / ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

SwiftUI๋กœ ๋งŒ๋“  ๋ทฐ์˜ ๋†’์ด๋ฅผ ์™ธ๋ถ€์—์„œ ์•Œ๋ ค๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ ํ•˜๋ฉด ๋œ๋‹ค...!

```swift
let swiftUIView = TestView()
let viewController = UIHostingController(rootView: swiftUIView)
let height = viewController.view.sizeThatFits(CGSize(width: UIScreen.main.bounds.width, height: .greatestFiniteMagnitude)).height
print("SwiftUI ๋ทฐ์˜ ์‹ค์ œ ๋†’์ด: \(height)")
```

์›๋ž˜๋Š” `intrinsicContentSize`๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ SwiftUI ๋ทฐ์˜ ๋†’์ด๋ฅผ ๊ตฌํ•˜๋ ค ํ–ˆ์ง€๋งŒ, ์ œ๋Œ€๋กœ ๊ณ„์‚ฐ๋˜์ง€ ์•Š์•˜๋‹ค.

`intrinsicContentSize`๋Š” ๊ณ ์ •๋œ ํฌ๊ธฐ๋งŒ ์ œ๊ณตํ•˜๊ณ , ์ฆ‰์‹œ ๊ณ„์‚ฐ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋™์  ๋ ˆ์ด์•„์›ƒ์˜ ๋ณ€ํ™”๋ฅผ ๋ฐ˜์˜ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค.

๋‚ด๊ฐ€ ๊ตฌํ˜„ํ•œ SwiftUI ๋ทฐ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ `Text`๊ฐ€ `VStack` ๋‚ด๋ถ€์— ์œ„์น˜ํ•ด ์žˆ๋Š”๋ฐ, `Text`์˜ ๊ธธ์ด์— ๋”ฐ๋ผ ์ค„ ์ˆ˜๊ฐ€ 1์ค„ ๋˜๋Š” 2์ค„๋กœ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ `intrinsicContentSize`๋Š” ํ•ญ์ƒ 1์ค„์ด๋ผ๋Š” ๊ฐ€์ • ํ•˜์— ํฌ๊ธฐ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋™์ž‘ํ–ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด `sizeThatFits`๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค.

`sizeThatFits`๋Š” ๋ ˆ์ด์•„์›ƒ ์ƒํƒœ์™€ ์ œํ•œ ์กฐ๊ฑด์„ ๊ณ ๋ คํ•˜์—ฌ ์ตœ์ ์˜ ํฌ๊ธฐ๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•œ๋‹ค. ํŠนํžˆ, `Text ํฌ๊ธฐ`๋‚˜ `์ด๋ฏธ์ง€ ํฌ๊ธฐ`์™€ ๊ฐ™์€ ๋™์  ์ฝ˜ํ…์ธ ์— ๋”ฐ๋ผ ๋†’์ด๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒฝ์šฐ์—๋„ ๊ทธ ๋ณ€ํ™”๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ๋ฐ˜์˜ํ•œ๋‹ค.

---


# ์ฐธ๊ณ  ๋งํฌ

- [https://developer.apple.com/documentation/swiftui/uihostingcontroller/sizethatfits%28in%3A%29?utm_source=chatgpt.com](https://developer.apple.com/documentation/swiftui/uihostingcontroller/sizethatfits%28in%3A%29?utm_source=chatgpt.com)
- [https://stackoverflow.com/a/62992524](https://stackoverflow.com/a/62992524)

0 comments on commit f065b02

Please sign in to comment.