์ ์ฒด ๊ธ
-
UITextView๋ฅผ SwiftUI์์ ์ปค์คํ ํ๊ฒ ์ฌ์ฉํ๊ธฐSwiftUI 2023. 2. 17. 14:00
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ SwiftUI์์ ํ ์คํธ๋ทฐ ๊ตฌํ์ ์ํด ๊ธฐ๋ณธ ์ ๊ณตํ๋ TextEditor๋ฅผ ์ฌ์ฉํ์ง ์๊ณ UIKit ์ธ์์ UITextView๋ฅผ ๊ฐ์ ธ์ ์ ๋ง๋๋ก ํ ์คํธ๋ทฐ๋ฅผ ์ปค์คํ ํ๊ฒ ๊ตฌํํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค๐ ์ TextEditor ์์ฐ์ฃ !? ์ฐ์ ํ์ฌ ๊ธฐ์ค iOS 16์์ TextEditor๊ฐ ๋ถ๋ช ์ธ๋งํด์ง๊ฒ์ ์ฌ์ค์ ๋๋ค. ๋ค๋ง ์ต์ ๋ฒ์ ์ ์ฌ์ฉํ ์ ์๋ ํ๊ฒฝ์ ์ฒํ ์ฌ๋ฌ๋ถ๋ค์ด ๋ ๋ง์๊ฒ ๊ฐ๊ณ ์ ์ญ์ ๊ทธ๋ ์ต๋๋ค๐ญ 14,15 ๋ฒ์ ๊ธฐ์ค์ผ๋ก ๊ฐ๋จํ ์ง์ด๋ณด๋ฉด ์ฐ์ SwiftUI์ ๊ธฐ๋ณธ ์ ๊ณต๋๋ TextEditor์์๋ ์ฐ๋ฆฌ๊ฐ ํํ ์ฌ์ฉํ๋ placeholder๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ์ง ์์ ํ์ํ๋ฉด overlay๋ก ์ปจํธ๋กค ํด์ค์ผํฉ๋๋ค. ๋ ํ ์คํธ๊ฐ ์ ๋ ฅ๋๋ ์นธ์ Inset์ ์กฐ์ ํ ๋..
-
Get ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ฌํํ ์น API ํด๋ผ์ด์ธํธ ๊ตฌํํ๊ธฐLibrary 2023. 2. 13. 14:18
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ค๋์ Get์ด๋ผ๋ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ํ์ตํด๋ณด๊ฒ ์ต๋๋ค๐ ์ฐ๋ฆฌ๊ฐ ์ต์ํ๊ฒ ์๊ณ ์๋ ๋คํธ์ํฌ ํต์ ๋น์ฐํ ๋ง์ด์ง๋ง ํด๋ผ์ด์ธํธ ๊ฐ๋ฐ์ ํ๋ฉด์ API ๋คํธ์ํฌ ํต์ ์ ์ํ ๋์ผ ์ํ ์๊ฐ ์์ต๋๋ค. ๋คํธ์ํฌ ํต์ ์ ์ํด ์ฐ๋ฆฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ํ์์ ์ ๊ณตํด์ฃผ๋ URLSession์ ์ฌ์ฉํ๊ธฐ๋ ํ๊ณ Alamofire๋ Moya์ ๊ฐ์ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋์์ ๋ฐ์ URLSession์ ์ถ์ํํ์ฌ ์กฐ๊ธ ๋ ์ฝ๊ฒ ์ฌ์ฉํ๊ธฐ๋ ํฉ๋๋ค. ์ ๊ทธ๋ผ ์ฌ๊ธฐ๋ค ํ๋๋ฅผ ๋ ์ถ๊ฐํด์ ์์๋ณด๋ ค๊ณ ํฉ๋๋ค. ๊ทธ๊ฒ ๋ฐ๋ก ์ค๋ ํด๋ณผ Get์ด๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ๊ตฌ๊ตฌ์ ์ ์์ธํ Get์ ๋ํด ํํด์ณ๋ณด์์ฃ ! Get ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋? Get์ด๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ async/await๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ถ๋ ๊ฐ๊ฒฐํ Swift ์น AP..
-
compare๊ณผ ComparisonResultSwift 2023. 2. 8. 09:30
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ ๋ฌธ์์ด์ ๋น๊ตํ๋ Compare์ด๋ผ๋ ๋ฉ์๋์ ๊ทธ ๋ฐํ ํ์ ์ธ ComparisonResult์ ๋ํด ํ์ตํด๋ณด๊ฒ ์ต๋๋ค๐ ์ฐ์ ์์ฃผ ์๋ ์์ด ์ฌ์ฉํ๊ณ ์๋ Compare์ด๋ผ๋ ๋ฉ์๋๋ถํฐ ์ง๊ณ ๋์ด๊ฐ๋ณผ๊ป์! compare? ํ๋ผ๋ฏธํฐ๋ก ์ง์ ๋ ์ต์ ๋ค์ ์ฌ์ฉํด ๋ฌธ์์ด์ ๋น๊ตํ๊ณ ๋ฒ์์ ๋ํ ์ดํ ์์๋ฅผ ๋ฐํํด์ค๋๋ค. ์ฌ๊ธฐ์ ์ค์ํ๊ฑด ์ดํ ์์์ ๋๋ค. ์ดํ ์์๋ ์์คํค ์ฝ๋๊ฐ์ฒ๋ผ A๋ณด๋ค Z๊ฐ ๋ ํฌ๋ค๊ณ ์ธ์ํด์ฃผ์ฃ . ๊ทธ๋ ๊ธฐ์ ๊ฒฐ๊ตญ compare ๋ฉ์๋์ ์ญํ ์ ๋ ๋ฌธ์์ด์ ์ดํ ์ ์ฆ, ์ ๋ ฌ ์์ ๋ํด ๋น๊ตํด์ค๋๋ค. ํด๋น ๋ฉ์๋๋ NSString์ ์ธ์คํด์ค ๋ฉ์๋๋ก ๋ฌธ์์ด์์ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค. func compare( _ string: String, option..
-
PopupViewLibrary 2023. 2. 6. 16:27
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ PopupView๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ํ์ตํด๋ณด๊ฒ ์ต๋๋ค๐ SwiftUI์์ ํ๋กํ /ํ ์คํธ ๋ฉ์์ง ํน์ ํ์ ์ด๋ ๋ฐํ ์ํธ๋ฅผ ๋ ธ์ถํด์ผ ๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ API๋ฅผ ์ฌ์ฉํ์ฌ๋ ๋๊ณ ์๋๋ฉด ์กฐ๊ธ ๋ ์ปค์คํ ํ๊ฒ ๋ง๋ค์ด์ ์ฌ์ฉํด๋ ๋๋๋ฐ ์ ๊ฒ๋ค์ ์กฐ๊ธ ๋ ํธ๋ฆฌํ๊ฒ ์ ๊ณตํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋๋ผ๊ตฌ์! ๋ฐ๋ก ์ค๋ ํ์ตํด๋ณผ PopupView์ ๋๋ค๐๐ป PopupView ๋จ์ํ View Modifier๋ก ๊ฐ๋จํ ์ฌ์ฉํ ์ ์๋๋ก ๊ตฌํ๋์ด ์์ด ์ฐ์ ์ฌ์ฉ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. SPM / cocoapods / carthage ๋ชจ๋ ๋ฐฉ์์ผ๋ก ๊ฐ์ ธ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํ๋กํ ๋ถํฐ ํ๋ฒ ๋ฐ๋ก ์ฌ์ฉํด๋ณผ๊ป์! import SwiftUI import PopupView struc..
-
[Github] ๋ค์ค ๊นํ ๊ณ์ ์ฐ๋ํ๊ธฐGit 2023. 2. 3. 10:55
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ ๋ค์ค ๊นํ ๊ณ์ ์ ํ PC์์ ์ฐ๋ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ํฌ์คํ ํด๋ณด๊ฒ ์ต๋๋ค๐ ๊ฐ์ธ ๊นํ ๊ณ์ ๊ณผ ํ์ฌ์์ ์ฌ์ฉํ๋ ๊นํ ๊ณ์ ์ด ๋ค๋ฅผ ๊ฒฝ์ฐ ๊ฐ๊ฐ ํ๋ก์ ํธ์ ๋ํด์ ๋ค๋ฅธ ๊ณ์ ์ผ๋ก ์ด์ฉํ๊ฒ ๋ฉ๋๋ค. ์ด๋ด๋ SSH๋ฅผ ์ด์ฉํด ํด๋ก ๋ฐ๊ฑฐ๋ pull, push ๋ฑ ์์ ์ ์ํ ๋ ๋ค์ค์ผ๋ก ์ฐ๋ํ์ฌ ๊ด๋ฆฌํ ์ ์์ด์๐ฒ ๊ทธ๋ผ ์ด๋ป๊ฒ ์ฐ๋ํ๋์ง ๋ฐ๋ก ใฑใฑ 1. SSH Key ์์ฑํ๊ธฐ ์ฐ์ ๊ฐ์ธ, ํ์ฌ ๊นํ ๊ณ์ ์ ๋ํด ๊ฐ๊ฐ SSH Key๋ฅผ ์์ฑํด์ผํฉ๋๋ค. ๋จผ์ ํฐ๋ฏธ๋์ ์ผ์ /Users/ํ๋กํ ์ค์ ์ด๋ฆ/.ssh๋ก ๋ค์ด๊ฐ์ค๋๋ค. ์๋ ๊ฒ ๊ธฐ๋ณธ ํฐ๋ฏธ๋์์๋ cd .ssh๋ก๋ง ๋ค์ด๊ฐ์ฃผ๋ฉด ๋์. ๊ทธ ๋ค์ ์๋ ๋ช ๋ น์ด๋ฅผ ๊ฐ์ธ ํน์ ํ์ฌ ๊นํ ๊ณ์ ์ ๋ฃ์ด์ ์ ๋ ฅํฉ๋๋ค. ssh-keygen -t rs..
-
TCA - ReducerProtocolTCA 2023. 1. 31. 09:09
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ TCA์ ReducerProtocol์ ๊ฐ๋จํ ํ์ตํด๋ณด๋ คํฉ๋๋ค๐ TCA๊ฐ ๋ ์ด ๊ฐ์๋ก ์ ๋ฐ์ดํธ๋ ๋นจ๋ผ์ง๊ณ ๋ ๋ฐ์ ํ๊ณ ์์ด์! ํ์ฌ ๋ฒ์ ์ด 0.50.1๊น์ง ๋์์ผ๋ฉฐ ๊ทธ์ ์ ๋๊ฒฉ๋ณ์ด 0.41.0์์ ์ผ์ด๋ฌ์ต๋๋ค. ๋ฐ๋ก ReducerProtocol์ ๋ฑ์ฅ์ด์ฃ ๐บ๐ป ๊ธฐ์กด์ TCA์์ Core๋ฅผ ๊ตฌ์ฑํ ๋๋ State, Action, Environment๋ค์ ๋ณ๋ struct, enum์ผ๋ก ์ ์ํ๊ณ ์ด๋ฅผ Reducerํ์ ์ ์์๋ก ๋ง๋ค์ด ์ ์ํ๋ ํํ์์ด์. ๊ทธ๋ฐ๋ฐ ์ด์ ๋ฐ๋๋ก Protocol Programming์ ์ฅ์ ๋ ์ด๋ฆฌ๋ฉด์ ๋ ์ ํฉํ๊ฒ ReducerProtocol์ ์ฌ์ฉ์ผ๋ก ์ ๋ถ ๋ณํ๋์์ผ๋ฉฐ ์ฅ์ ๋ ๋ง์์ก์ด์๐๐ป ๋ง์ฝ ์ด์ TCA ๊ตฌ์ฑ์ด ๋๋ต์ ์ผ๋ก ์ด๋ป๊ฒ ๋์ด์์..
-
User Scenario๋ถํฐ User Flow๊น์งUser 2023. 1. 26. 10:43
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ ๊ธฐ์ ํ์ต์ด ์๋ ์กฐ๊ธ ๋ค๋ฅธ ๋ถ๋ถ์์ ๊ฐ๋ ์ ๋ฆฌ๋ฅผ ํด๋ณผ๊นํด์๐ ๋ฐ๋ก User Scenario๋ถํฐ User Flow๊น์ง ์ด๊ธฐ ์ฑ ์ค๊ณ ๋ฐ ๊ธฐํ์ ์์ด ํ์ํ ๊ณผ์ ๋ค์ ์ ๋ฆฌํด๋ณด๋ คํด์ใ ใ ๊ฐ๋ฐ์์ฌ๋ ์ ์ ์ ์ฅ์์ ๋ฐ๋ผ๋ณด๋๊ฒ๊ณผ ์๊ฒฌ์ ๋ผ ์ ์๋๊ฒ์ ์ ๋ง ์ค์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด์ ์ด๋ค ํ๋ฆ์ผ๋ก ์ ์ ์ ์ฅ์์ ์๊ฐํด๋ณผ ์ ์์ผ๋ฉฐ ์ด๋ค ๋จ๊ณ์์ ์ ์ ์ ํ์ํ ์ฌํญ๋ค์ ์ ๋ฆฌํ ์ ์๋๊ฐ์ ๋ํด ์ด 6๊ฐ์ง๋ก ๊ตฌ๋ถ ํ ์ ์์ต๋๋ค. ๊ทธ ์ฌ์ฏ๊ฐ์ง ์ด์ ๋ถํฐ ํ๋์ฉ ๊ฐ๋ ์ ๋ฆฌํด๋ณด์์ฃ ๐บ๐ป User Scenario ๋ชฉ์ ์๋น์ค์ ํน์ฑ์ ์ดํดํ๊ธฐ ์ํจ ํด๋น ์๋น์ค์์ ๊ธฐ๋ํ ์ ํด๋น ์๋น์ค๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํ ๊ฒ์ธ์ง์ ๋ํด ์ ์ ์ Motivation, Needs, Barriers๋ฅผ ์ดํดํ ..
-
CGFloatSwift 2023. 1. 20. 16:54
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ CGFloat์ ๋ํด ํ์ตํด๋ณด๊ฒ ์ต๋๋ค๐ ์ฐ์ ์ค์๋ฅผ ํํํ๋ ๊ธฐ๋ณธ ํ์ ์ค Float์ Double์ ์์ฃผ ์ด์ง ์ง๊ณ ๋์ด๊ฐ๊ฒ ์ต๋๋ค๐คซ Float vs Double ๋ค๋ค ๊ธฐ๋ณธ ์๋ฃํ์์ Float์ Double์ ์ ์์ค๊ฑฐ์์. ๋๋ค ๋ถ๋ ์์์ ์ ์ฌ์ฉํ๋ ์ค์๋ฅผ ๋ํ๋ด๋ ํ์ ์ด์ฃ . ํํ Float๋ 32๋นํธ, Double์ 64๋นํธ๋ก ํํํฉ๋๋ค. ์ฆ Float๋ ์ต๋ 6์๋ฆฌ๊น์ง๋ง ํํ์ด ๊ฐ๋ฅํ๊ณ Double์ 15์๋ฆฌ๊น์ง ํํ์ด ๊ฐ๋ฅํ์ฃ . ์ฆ ์ฐ๋ฆฌ๋ ๋๋ถ๋ถ ์ด๋์ ๋ ๋ฒ์๊ฐ ์ฌ์ง ์์ธกํ๊ธฐ ํ๋ค๋๊ฐ ๋ง์ผ๋ Double์ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ผ CGFloat๋ ๋์ฒด ๋ญ๊น์? CGFloat CGFloat๋ Core Graphics ๋ฐ ๊ด๋ จ ํ๋ ์์ํฌ์ ๋ถ๋ ์์์ ์ค์นผ๋ผ ๊ฐ..