์ ์ฒด ๊ธ
-
Event CapturingiOS 2023. 10. 26. 13:29
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐ ์ด๋ฒ ํฌ์คํ ์์๋ Event Capturing์ ๋ํด ํ๋ฒ ์์๋ณด๊ฒ ์ต๋๋ค ๐๐ป ์ฐ์ ์ฐ๋ฆฌ๋ ์ด์ ํฌ์คํ ์์ Event Bubbling์ด๋ผ๋ ๊ฐ๋ ์ ๋ํด ์์๋ดค์ด์! Event Bubbling์ ๊ฐ๋ณ๊ฒ ๋ค์ ๋ฆฌ๋ง์ธ๋ ์์ผ๋ณผ๊น์? ํ ์์์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด, ์ด ์์์ ํ ๋น๋ ํธ๋ค๋ฌ๊ฐ ๋์ํ๊ณ ์ด์ด์ ๋ถ๋ชจ ์์์ ํธ๋ค๋ฌ๊ฐ ๋์ํ๋๊ฒ์ด ๋ฒ๋ธ๋ง์ ์๋ฆฌ ๐ซง ๊ทธ๋ ๊ธฐ์ ์ ์ ์ ํฐ์น ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ ํธ๋ค๋ฌ์ ์ญํ ์ด ์๋จ์ผ๋ก ์ ํ๋ ์ ์๋๊ฒ์ด์ฃ . ๋ง์ฝ ์ด๋ฒคํธ ๋ฒ๋ธ๋ง์ ์ดํด๊ฐ ํ์ํ์๋ค๋ฉด ์ด์ ํฌ์คํ ์ ์ฐธ๊ณ ํด์ฃผ์ธ์ ๐๐ป Event Bubbling ์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐ ์ด๋ฒ ํฌ์คํ ์์๋ Event Bubbling์ด๋ผ๋ ๊ฐ๋ ์ ๋ํด ํ์ตํด๋ณด๊ฒ ์ต๋๋ค ๐๐ป ๋ฐ๋ก ์ด์ ํฌ์คํ ์ธ Borderle..
-
Event BubblingiOS 2023. 10. 23. 16:54
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐ ์ด๋ฒ ํฌ์คํ ์์๋ Event Bubbling์ด๋ผ๋ ๊ฐ๋ ์ ๋ํด ํ์ตํด๋ณด๊ฒ ์ต๋๋ค ๐๐ป ๋ฐ๋ก ์ด์ ํฌ์คํ ์ธ BorderlessButtonStyle์ ๋ํด ํ์ตํด๋ณด๋ฉด์ ์งง๊ฒ ์ด๋ฒคํธ ๋ฒ๋ธ๋ง์ด๋ผ๋ ๊ฐ๋ ์ด ์ ์ฉ๋์ด์ ๊ทธ๋ ๋ค~๋ผ๊ณ ์๊ฐ๋ง ํ๊ณ ์ง๋๊ฐ์๋๋ฐ์. ๊ทธ๊ฑธ ์ด๋ฒ ํฌ์คํ ์์ ์กฐ๊ธ ๋ ๊ตฌ์ฒด์ ์ผ๋ก ์์๋ณด๋ คํฉ๋๋ค! ๋ง์ฝ BorderlessButtonStyle์์ ์ด๋ป๊ฒ ํ๋ฆ์ ๋ง์ด ๋์๋์ง ํ์ํ๋ค๋ฉด ์๋ ํฌ์คํ ์ ๋จผ์ ์ฐธ๊ณ ํด์ฃผ์ธ์ ๐๐ป BorderlessButtonStyle์ ํ์ฉ ์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐ ์ด๋ฒ ํฌ์คํ ์์๋ SwiftUI์ ๋ฒํผ์ ๋ค๋ฃฐ๋ ์คํ์ผ์ ์ง์ ํ ์ ์๋๋ฐ์. ๊ทธ ์ค BorderlessButtonStyle์ ์์๋ณด๊ณ ๊ทธ ์คํ์ผ์ ์ด๋ป๊ฒ ์ค์ ์์ ์ ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ์..
-
BorderlessButtonStyle์ ํ์ฉSwiftUI 2023. 10. 19. 08:35
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐ ์ด๋ฒ ํฌ์คํ ์์๋ SwiftUI์ ๋ฒํผ์ ๋ค๋ฃฐ๋ ์คํ์ผ์ ์ง์ ํ ์ ์๋๋ฐ์. ๊ทธ ์ค BorderlessButtonStyle์ ์์๋ณด๊ณ ๊ทธ ์คํ์ผ์ ์ด๋ป๊ฒ ์ค์ ์์ ์ ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ์์์ง ์ฝ๋๋ก ๊ตฌํํด๋ณด๊ฒ ์ต๋๋ค ๐๐ป ์ฐ์ BorderlessButtonStyle์ ๋ํด ๊ณต์๋ฌธ์๋ฅผ ํตํด ์์๋ณผ๊น์? BorderlessButtonStyle ์ ๋ง ํด๋น ์คํ์ผ์ ์๋ฏธ๋ ๋ณด๋ ์ฆ, ํ ๋๋ฆฌ๋ฅผ ์ ์ฉํ์ง ์์ ๋ฒํผ ์คํ์ผ์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก Button์ buttonStyle ๋ชจ๋ํ์ด์ด๋ฅผ ํตํด ๋ฒํผ ์คํ์ผ์ ์ ๊ณตํ๊ณ ์ ํ ๋, static ๋ณ์๋ก .borderless๊ฐ ์๊ธฐ์ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๊ฒ ๋์ด์์ ์ค๋ช ์ ์ฌ์ค! ๊ทธ๋ผ ๋์์ธ์ ์ธ๊ฒ ์ธ์ ํ์ ์์ ์ด BorderlessButtonS..
-
Default Initializers์ ํํ ์คํดSwift 2023. 10. 17. 14:48
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐ ์ด๋ฒ ํฌ์คํ ์ ์งง๊ฒ Swift์ Access Level์ ๊ณต๋ถํ๋ฉด์ ์คํด๊ฐ ์์ผ ์ ์๋ ๋ถ๋ถ์ ๋ํด ํ๋ฒ ๋์ง์ด๋ณด๋ ค๊ณ ํด์ ๐๐ป โ ๏ธ ๋ด์ฉ ๋ค์ ์งง์ ์ฃผ์ โ ๏ธ ์ผ๋จ ์ด๋ ๋ถ๋ถ์์ ์คํด๊ฐ ์์ผ ์ ์์๋์ง ๊ณต์ ๋ฌธ์๋ฅผ ํตํด ํ๋ฒ ํ์ธํด๋ณผ๊ป์ใ ใ Default Initializers ๋ฐ๋ก Default Initializers ๋ถ๋ถ์ธ๋ฐ์. ์ฌ๊ธธ ํ๋ฒ ํด์ํด๋ณด๋ฉด ์ด๋ ์ต๋๋ค. "Swift๋ ๋ชจ๋ ํ๋กํผํฐ๊ฐ ๊ธฐ๋ณธ๊ฐ์ ๊ฐ์ง๊ณ ์๊ณ , ๊ทธ ์์ฒด๋ก ์ ์ด๋ ํ๋์ ์ด๊ธฐํ ํจ์๋ฅผ ์ ๊ณตํ์ง ์๋ ๊ตฌ์กฐ์ฒด๋ ๊ธฐ๋ณธ ํด๋์ค์ ๋ํด ์๋์ผ๋ก ์ธ์๊ฐ ์๋ ๊ธฐ๋ณธ ์ด๊ธฐํ ํจ์๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๊ฒ์ Default Initailizers์ธ ๊ธฐ๋ณธ ์ด๋์ ๋ผ์ด์ ๋ผ๊ณ ๋ถ๋ฆ ๋๋ค. ๊ธฐ๋ณธ ์ด๋์ ๋ผ์ด์ ์ ์ ๊ทผ ๋ ๋ฒจ์ ์ผ๋ฐ์ ์ผ๋ก ํด..
-
allowsHitTesting์ ํตํ ๋ทฐ ํฐ์น ์ด๋ฒคํธ ๋๊ธฐ๊ธฐSwiftUI 2023. 10. 13. 10:57
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐ ์ด๋ฒ ํฌ์คํ ์์๋ ํน์ ๋ทฐ์ ํฐ์น ์ด๋ฒคํธ๋ฅผ ๋ฌด์ํ๊ณ ๋ค์ ๋ทฐ๋ก ๋๊ธฐ๋ ๋ทฐ ๋ชจ๋ํ์ด์ด์ธ allowsHitTesting์ ํ์ตํด๋ณผ๊ป์ ๐๐ป ์ด๋ฒ ํฌ์คํ ์ SwiftUI๋ก ๋ทฐ๋ฅผ ๊ตฌ์ฑํ๊ณ ํฐ์น ์ด๋ฒคํธ๋ฅผ ๋ทฐ๊ฐ ์์ฌ์์๋ ๋ค๋ฃจ๊ธฐ์ ๋๋ฌด ์ ์ฉํ๋ฐ ์์ฃผ ์ฝ๊ธฐ์ ํฌ์คํ ์ด ๋๊ฒ ๊ฐ๋จํ ์ ์์ต๋๋ค! ๋๋ฌด ์งง์์ ์คํฌ๋กค์ ๋ด๋ฆฌ๊ธฐ๋ ์ ์ ํฌ์คํ ์ด ๋๋ ์ ์์ผ๋ ๋น ๋ฅด๊ฒ ์น๊ณ ๋น ์ ธ๋ด์ ๐ง๐ปโ๏ธ ์ฐ์ ์ธ์ ์ฌ์ฉํ ๊น์? ์๋์ ๊ฐ์ ์ฝ๋๊ฐ ์๋ค๊ณ ๊ฐ์ ํด๋ณผ๊ป์. struct ContentView: View { @State var isDisplayText: Bool = false var body: some View { VStack { Text("Green") .font(.title) .bold() .for..
-
Debouncer ๋ง๋ค๊ธฐ (No Combine, No RxSwift)Swift 2023. 10. 9. 02:53
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ ๋ก์ง์์ ์์ฃผ ๊ฐ๋จํ ์ฌ์ฉํ ์ ์๋ Debouncer๋ฅผ ๋ง๋ค์ด ์ฌ์ฉํด๋ณด๊ฒ ์ต๋๋ค ๐๐ป No Combine, No RxSwift Combine์ด๋ RxSwift์์ ํํ ์ ํ ์ ์๋ debounce์ ์ฌ์ฉ๊ณผ ํผ๋ํ ์ ์์ด์ ํ๋ฒ ์ง๊ณ ๋์ด๊ฐ๋ณผ๊ป์. ์์๋ก ์ ํ ๊ณต์๋ฌธ์์ Combine ์ฝ๋๋ฅผ ์กฐ๊ธ ๋ ์๊ธฐ ์ฝ๊ฒ ๋ณ๊ฒฝํ์ฌ ๊ฐ์ ธ์๋ณด๊ฒ ์ต๋๋ค. let bounces:[(String,TimeInterval)] = [ ("Black", 0), ("Green", 0.25), // 0.25s interval since last index ("Red", 1), // 0.75s interval since last index ("Blue", 1.25), // 0.25s inter..
-
2023 SW ๋ง์ด์คํฐ๊ณ ์ฐํฉ ํ ํฌ์ฝ์ํธ ํ๊ณํ๊ณ 2023. 10. 2. 07:50
์๋ ํ์ธ์ ๊ทธ๋ฆฐ์ ๋๋ค ๐ ์ด๋ฒ ํฌ์คํ ์ ํ๊ณ ํ์์ ๋๋ค! ์ค๋ซ๋์๊น์ง๋ ์๋์ง๋ง ํ ์ฌ๋ฆ์ ํ๋ ์ฐ์ฌ ํ๊ณ ๋ฅผ ์ฌ๋ฆ์ด ์ง๋๊ณ ์ถ์์ด ์ง๋๊ณ ๋ ์ด ์ ์ ํด์ง๋ ์ง๊ธ ์๊ธฐ ์ ์ ํ๊ฒ ํด๋ณด๊ฒ ์ต๋๋ค ๐ ์ฐ์ SW ๋ง์ด์คํฐ๊ณ ์ฐํฉ ํ ํฌ์ฝ์ํธ๊ฐ ๋ฌด์์ธ์ง ๋ง์๋ถ๋ค์ด ์ฒ์ ๋ค์ด๋ณด์๋๋ถ๋ ์์์ ๋๋ก ์์ํ ์ ์์ต๋๋ค. ๊ทธ๋ ๊ธฐ์ ๋จผ์ SW ๋ง์ด์คํฐ๊ณ ์ฐํฉ ํ ํฌ์ฝ์ํธ๊ฐ ๋ฌด์์ธ์ง ์ด๋์ ์ฃผ์ตํ๊ณ ๊ทธ๋ฐ๊ฒ์ธ์ง ํ๋ฒ ์บ๋ณผ๊น์!? SW ๋ง์ด์คํฐ๊ณ ์ฐํฉ ํ ํฌ์ฝ์ํธ๊ฐ ๋ญ๋ฐ? ๐ค SW๋ ์ํํธ์จ์ด์ ์ฝ์์ฃ !? ๊ทธ๋ผ SW ๋ง์ด์คํฐ๊ณ ๋ ๋๋ต์ ์ผ๋ก ์ถ์ธกํด๋ณด๋ฉด ์ํํธ์จ์ด๋ฅผ ํน์ฑํ๋ก ๊ฐ๋ฅด์น๋ ๊ณ ๋ฑํ๊ต์ผ๊ฑฐ์์. ์ ๋ ์ผ๋ฐ ์ธ๋ฌธ๊ณ ๊ณ ๋ฑํ๊ต๋ฅผ ๋์๊ธฐ์ ์๋ฐ ํน์ฑํ๊ณ ๊ฐ ์๋ค๋๊ฑด ์ ๋ชฐ๋๋๋ฐ, ์๋๋ผ๊ตฌ์! ํ๊ตญ์๋ ๋๋ / ๋๊ตฌ / ๊ด์ฃผ / ๋ถ์ฐ ์ด 4๊ฐ ํ..
-
SwiftUI์์ View์ Size ์ธก์ ํ๊ธฐSwiftUI 2023. 9. 27. 11:04
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ SwiftUI์์ View์ Size๋ฅผ ์ธก์ ํ๋ ์ฝ๋๋ฅผ ๊ณต์ ํด๋ณผ๊นํฉ๋๋ค ๐๐ป ์ด๋จ๋ View Size ๊ฐ์ด ํ์ํ ๊น์?์ฐ์ , SwiftUI๋ก ๊ตฌํ์ ํ๋ค๋ณด๋ฉด ์ํ๋ ํด๋น ์์ญ์ ๋ทฐ ์ฌ์ด์ฆ๋ฅผ ๊ฐ์ง๊ณ ์ด๋ ํ ์์ ์ ํด์ค์ผํ๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํฉ๋๋ค. ์๋ฅผ๋ค์ด, VStack์ผ๋ก ํ์ ๋ทฐ๋ค์ด ์์ผ๋ ํค๋ ์์ญ์ ์ฌ๋ฌ ๋ทฐ๋ค์ ์กฐํฉํ์ฌ ๋ฃ๊ณ ์ด์ ๋ํ ํค๋ ์์ญ์ ๋ทฐ ๋์ด๋ฅผ ๊ฐ์ง๊ณ ์ด๋ ํ ์์ ์ ํด์ค๋๊ฐ ์ข ์ข ๋ฐ์ํฉ๋๋ค. ๋ฒํผ ํญ ๋ฑ ์ธํฐ๋์ ์ด ๋ฐ์ํ์๋ offset์ ์ต์๋จ์ผ๋ก ์ด๋์ํค๋๊ฒ์ด ์๋ ํค๋ ์์ญ ์ดํ๋ถํฐ ๋ ธ์ถ์ํค๊ณ ์ถ๋ค๋ฉด ์ด ํค๋ ์์ญ์ height๋ฅผ ๊ตฌํด y offset์ ๋ณ๊ฒฝํด์ค์ผ ํ ์ ์์ฃ . ๋ฌผ๋ก ์ด๋ด ๊ฒฝ์ฐ ํค๋ ์์ญ์ ๋ด๊ธด ํ์ ๋ทฐ๋ค์ ํ๋ ์์ด ๊ณ ์ ..