๐ Live Activity ์ข ๋ฃ '์ฌ๋ผ์' ์ฑ ๊ฐ๋ฐ์ ํ ๋, LiveActivity ๊ตฌํ์ ๋ด๋นํ์๋๋ฐ ๋น์์ ๊ฒช์๋ ์ด์์ ๊ด๋ จํ์ฌ ๋ ธ์ ์ ๊ธฐ๋กํด๋์๋๊ฒ์ ํฐ์คํ ๋ฆฌ์๋ ์ฎ๊ฒจ์ ์ด๋ณด๊ณ ์ ํ๋ค. ์ดํ ์ธ๋งํฌ์ด์ ๋ํ ํฌ์คํ ์ ํ ๊ฑด๋ฐ, ์ธ๋งํฌ์ด์ ๊ด๋ จํ ์ด์์ด๊ณ , ๋ค์๊ณผ ๊ฐ๋ค. ๐ฌ Background ์ํ์์ ์ฑ ๊ฐ์ ์ข ๋ฃ์ LiveActivity๋ ์ข ๋ฃํ๊ฒ ํ๋ ค๋ฉด ? ์ฆ, DynamicIsland(LiveActivity)๊ฐ ๋์์ค์ ์ฑ์ ์ค์์ดํํ์ฌ ๊ฐ์ ์ข ๋ฃํ๋ฉด LiveActivity๋ ์ข ๋ฃ๋์ง ์๊ณ ๋ทฐ๊ฐ ๊ทธ๋๋ก ๋จ์์๋ ๊ฒ์ด๋ค. ํ์ง๋ง ๊ธฐ๋ฅ์์ฒด๋ ์ข ๋ฃ๋๋ค.์์ฝํ๋ฉด, ์์ฒ๋ผ ์ฑ์ ์ข ๋ฃ์ํด์ผ๋ก์จ ํจ์๋ ๋์ํ์ง ์๊ธฐ์ ๊ธฐ๋ฅ์ ๋ฉ์ถ์ง๋ง, LiveActivity ๋ํ ์ข ๋ฃ๊ฐ ๋์ด์ผํ๋๋ฐ ์ฑ์ด ๊ฐ์ ์ข ๋ฃ..
๐ Custom Font ์ถ๊ฐ ๊ธฐ์กด์ Xcode์ ์ปค์คํ ํฐํธ๋ฅผ ์ถ๊ฐํ ๋,์ด๋ ๊ฒ ํฐํธํ์ผ๋ค์ ๋๋๊ทธํ์ฌ ์ถ๊ฐํ๊ณ , info์์ ํฐํธ๋ค์ Target ์ค์ ํ์ฌ ์ฌ์ฉํ๋จ๋ง์ด์์? ๋ง์ง๋ง์ผ๋ก, Font Extension ํ์ผ์ ์์ฑํ์๊ณ ์ !extension Font { // Bold static let pretendardBold28: Font = .custom("Pretendard-Bold", size: 16) static let pretendardBold24: Font = .custom("Pretendard-Bold", size: 20) // SemiBold static let pretendardSemiBold16: Font = .custom("Pretend..
์ค๋ ๊ฐ๋ฐํ ๋ ๊ฒช์๋ ๋ฌธ์ ์ธ๋ฐ, ์ฐพ์๋ณด๋ ๊ฐํน ์๊ธธ ์ ์๋ ๋ฒ๊ทธ์ธ๊ฒ ๊ฐ์ต๋๋ค. Xcode์์ Preview์ชฝ์์ 'can not preview in thie file'์ด๋ผ๊ณ ๋จ๊ณ ํ๋ฆฌ๋ทฐ๊ฐ ๋์ค์ง ์๋๊ฒ์ ๋๋ค.( fatal error ~~๋ ์์๋ ๊ฒ๊ฐ์๋ฐ ์ ํํ ๊ธฐ์ต์ ์๋๋ค์ ! ) Xcode๋ฅผ ๊ป๋ค์ผฐ๋๋ฐ๋ ํด๊ฒฐ๋์ง ์์์ง๋ง,๋ค์ ์๋ฃจ์ ์ผ๋ก ๋ฐ๋ก ํด๊ฒฐํ ์ ์์์ด์. 1. Xcode ์ข ๋ฃ2. ํฐ๋ฏธ๋์ ๋ค์ ๋ช ๋ น์ด ์ ๋ ฅ xcrun simctl --set previews delete all3. ๋ค์ Xcodeํค๋ฉด ํด๊ฒฐ ์๋ฃ
์ผ๋ฐ์ ์ธ Text๋ Image๋ ์ปดํฌ๋ํธ์ ํญ ์ ์ค์ฒ๋ฅผ ์ถ๊ฐํด์, ์ฌ์ฉ์๊ฐ ํญ ํ์๋ ์ก์ ์ ์ ์ํ ์ ์์ต๋๋ค. ์ ๊ฐ ๊ตฌํํ๋ฉด์ ๊ฒช์๋, ๊ฐ์ฅ ํํ ์ฌ์ฉํ ์ ์๋ ์์๋ก ๋ฐ๋ก์ฌ์ฉ์๊ฐ ํ ์คํธ๋ฅผ ์ ๋ ฅํ๊ธฐ์ํด Keyboard๊ฐ ์ผ์ง๊ณ , ๋น ํ๋ฉด์ ํฐ์น์ ํค๋ณด๋๊ฐ ๋ซ๊ฒํ๋ ์ํฉ์ ๋ค ์ ์์ ๊ฒ ๊ฐ์๋ฐ์. VStack { // View Code}.onTapGesture { print("ํค๋ณด๋๋ฅผ ๋ซ์ต๋๋ค.")}์ ๋ ๋ถ๋ช ์ด๋ ๊ฒ ๊ฐ์ฅ ํฌ๊ฒ ๊ฐ์ธ๊ณ ์๋ VStack์ ํญ ์ ์ค์ฒ๋ฅผ ๋ฃ์์ต๋๋ค.์ด๋ฌ๋ฉด ํ๋ฉด์ ๋น๋ถ๋ถ์ ํฐ์นํ๋ฉด ํด๋น print๋ฌธ์ด ๋์์ผํ์ง์์ต๋๊น ? ๊ทผ๋ฐ ํน์ ๋ถ๋ถ์์๋ ์์ ์๋์ ํ์ง ์๋๊ฑฐ์์ ? ๊ทธ๋์,, Stack๊ฐ์๊ฒ ๊ฒน์ณ์ ์๋์ด ์๋๋๊ฒ์ธ๊ฐ ? ์์ํ๊ณ ์ฐพ์๋ดค๋๋ฐ ๊ทธ ๋ฌธ์ ๋ ์๋..
๐ TextField ๋ค์ค๋ผ์ธ ๋ง๋ค๊ธฐ ํ๋ก์ ํธ์์ ์ฌ์ฉ์ ์ ๋ ฅ์ ๋ฐ๋ Text Field๋ฅผ ๊ตฌํํ๊ณ ์์๋๋ฐ, ๋์์ธ์ด ์กฐ๊ธ์ฉ ๋ฐ๋๋ฉด์ ํ ์คํธ ํ๋์ ์ ๋ ฅํ ํ ์คํธ๋ค์ด ์ฌ๋ฌ ์ค๋ก ๋์์ผํ์ต๋๋ค. ๊ทผ๋ฐ ์ ๋ TextField์ TextEditor์ ์ฐจ์ด์ ์ด, TextField๋ ํ ์ค ๊ทธ๋ฆฌ๊ณ TextEditor๋ ์ฌ๋ฌ ์ค๋ก ๋ช ํํ์ค ์์์ต๋๋ค.๊ทธ๋ฌ๋๊น, ์ฌ๋ฌ์ค๋ก ํด์ผํ๋ค๋ฉด ๋ฌด์กฐ๊ฑด TextEditor๋ฅผ ์ฌ์ฉํด์ผํ๊ณ ์๋ํฐ์๋ Placeholder๊ฐ ์์ผ๋ฏ๋ก ์ด๊ฒ๋ ๋ง๋ค์ด์ค์ผํ๋ค ...placeholder๋ฅผ ์น์ผ๋ ค๋ฉด zstack์ ์ฐ๋ , overlayํ๋ ๋๋ฌด ๋ณ๊ฒฝํ๊ธฐ ๊ท์ฐฎ์์,, ์ฅ ๊ตฌ๊ธ๋ง์ ํด๋ณด์๋๋ฐ์. TextField์์๋ ๋ค์ค๋ผ์ธ์ด ๊ฐ๋ฅํ๋ค๋ ๊ฒ...์ด์์ต๋๋ค. iOS 16์์๋ถํฐ ๋์๋๊ฒ์ด๋ผ๊ณ ..
๐ Tabbar Hide ๐ ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ Tabbar๊ฐ ์์๋๋ฐ ๋ฉ์ธ ํญ๋ฐ ํ๋ฉด์์ ๋ค๋น๊ฒ์ด์ ์ผ๋ก View๋ฅผ ์ด๋ํ๋ฉด์ด๋๋ View๋ถํฐ๋ Tabbar๊ฐ ์๋์ค๊ฒ ํด์ผํ์ต๋๋ค. ์ ๋ง ๊ฐ๋จํ ํด๊ฒฐ๋๋๊ตฐ์ ? ๐A View๊ฐ Tabbar์ ๋ฉ์ธ๋ทฐ์ด๊ณ ,A View์์ Navigation์ ํตํด B View๋ก ์ง์ ํ์๋, B View์์ ํญ๋ฐ๋ ์ฌ๋ผ์ง๊ฒ ํ๊ณ ์ถ๋ค. ํ๋ค๋ฉด B ํ์ผ์ View ์ฝ๋์ .toolbar(.hidden, for: .tabBar) ์ด ๋ชจ๋ํ์ด์ด๋ฅผ ์ ์ฉํด์ฃผ๋ฉด ๋ฉ๋๋ค ! ๋ฑ ๋ด๋ tabbar๋ฅผ hiddenํด์ฃผ๋๊ฑฐ๊ฒ ์ฃ ? โ๊ทผ๋ฐ ๋ฌธ์ ๊ฐ ๋ญ์๋ .. โ A ์์ B๋ก ๊ฐ๋ ํญ๋ฐ๋ ์์ฐ์ค๋ฝ๊ฒ ์ฌ๋ผ์ก์ง๋ง, B์์ ๋ค์ A๋ทฐ๋ก ๋๊ฐ๋ Tabbar๊ฐ ๋ฐ๋ก ๋ ์์ด์ผํ๋๋ฐ๋๋ ์ด๊ฐ ์์ด ..
NavigationView์ NavigationLink๋ฅผ ์ฐ๋ฉด์ ํ๊ธฐ๊ณ ์ด์ ํ๋ฉด์ผ๋ก ๊ฐ์ ๋ก ๋์๊ฐ ๋,NavigationView { // code}.navigationViewStyle(StackNavigationViewStyle()) ํด๋น ๋ชจ๋ํ์ด์ด ์ถ๊ฐ ! ์ฐธ๊ณ ๋ ํผ๋ฐ์คhttps://stackoverflow.com/questions/66559814/swiftui-navigationlink-pops-out-by-itself SwiftUI NavigationLink pops out by itselfI have a simple use case where a screen pushes another screen using the NavigationLink. There is a strange behavio..
๐ ์ฑ ๋ด ํ์ฌ ์ฑ๋ฒ์ ์ ๋ณด ํ์ํ๊ธฐ ์ฑ์ ์ ๋ฐ์ดํธ ํด๊ฐ๋ฉด์ ์ฌ์ฉ์๋ง๋ค ์ ๋ฐ์ดํธ ์ฌ๋ถ์ ๋ฐ๋ผ, ์ฌ์ฉ์ค์ธ ๋ฒ์ ์ด ๋ค๋ฅผ ๊ฒ์ด๋ผ๋ ์๊ฐ๋ ๋ค์๊ณ ..์ธ์ฑ๋ฆฌ๋ทฐ๋ฅผ ๋ฌ๋ฉด์ ๊ฐ์ด ๋ณด์ด๋๊ฒ๋ ๋์์ง ์๊ฒ ๋ค ์๊ฐ์ด ๋ค์ด ๊ฐ๋จํ๊ฒ ์ถ๊ฐํ์๋๋ฐ์. var appVersion: String { let version = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "Unknown" let build = Bundle.main.infoDictionary?["CFBundleVersion"] as? String ?? "Unknown" return "Version \(version) (Build \(build))"..