๋จผ์ ํ๊ฐ ์ค์ ์ ๋๋ค. // ํ๊ฐ extension UILabel { func setLineSpacing(ratio: Double) { let style = NSMutableParagraphStyle() let lineheight = self.font.pointSize * ratio //font size * multiple style.minimumLineHeight = lineheight style.maximumLineHeight = lineheight self.attributedText = NSAttributedString( string: self.text ?? "", attributes: [ .paragraphStyle: style ]) } } extension UILabel { func setLin..

UI๋ฅผ code๋ก ๊ตฌํํ๋ค๋ณด๋ฉด ์ง์ ๋ถํด์ง ์๊ฐ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฒ์ ๋ค์ ์์์๋๋ฐ ์ฌํํธ + ์ต์ + ์ปค๋งจ๋ + ๋ฐฉํฅํค(์ข,์ฐ) ๋ก ํ๋ฒ์ ๋ค ํผ์น๊ฑฐ๋ ๋ค ์ ์ ์ ์์ต๋๋ค ํ๋๋ง ์ ๊ณ ์ถ์ผ๋ฉด ์ฌํํธ๋ฅผ ๋นผ๋ณด์ธ์ ๊ทธ ์ธ ํ๋ฒ์ ์ฌ๋ฌ์ค ์์ ์ ๋ ฅํ๊ธฐ ์ปจํธ๋กค + ์ฌํํธ + ๋ฐฉํฅํค(์๋, ์) ํด๋น ๋ณ์ ์ด๋ฆ ๋ณ๊ฒฝ ์ปจํธ๋กค + ์ปค๋งจ๋ + e ์๋ ์ฝ์์ฐฝ ํผ์น๊ธฐ ์ปค๋งจ๋ + ์ฌํํธ + Y ์ฐ์ธก ํ๋ก์ ํธ ํ์์์ญ ์ปค๋งจ๋ + 0 ์ข์ธก ์์ฑ ์์ญ ์ปค๋งจ๋ + ์ต์ + 0 ์ถ๊ฐ์ ์ผ๋ก ์์ฃผ ์ฌ์ฉํ๋ ์ฝ๋ ๋จ์ถํค๋ก ์ ๋ ฅํ๋ ๋ฐฉ๋ฒ์ ๋๋ค https://ggasoon2.tistory.com/7 ์ด๋ฐ์์ผ๋ก code snippet์ผ๋ก ๋ฑ๋กํด๋๋ฉด uitf๋ง ์ณ๋ ์ ์ฝ๋๊ฐ ๋์จ๋ต๋๋ค ์ ๋ 30๊ฐ ์กฐ๊ธ ๋๊ฒ ๋ฑ๋กํด๋๋ค์ ์ด๋ฐ์์ผ๋ก ์์ฃผ ์ฐ..

Coordinator ํจํด์ ๋ง๋ ์ฌ๋์ด ์์ฑํ ์ ์ ์ด์ ์ ๊ฐ๋ ์๊ฐ ์ ๋๋ค. https://khanlou.com/2015/01/the-coordinator/ ์ฐ์์ด๋ ์ฝ๋๋ฅผ ๋ณด๊ธฐ์ ์์ ์ด๋ค ๊ฐ๋ (์ด๋ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋ ค๊ณ )์ผ๋ก ๋ง๋ค์๋์ง ์ค๋ช ๋์ด ์๋ค์ Coordinator ํจํด์ด๋ ์ฌ๋ฌ VC๊ฐ Navigation์ ์ด๋์ด๋ ๋ฐ์ดํฐ, ์ด๋ฒคํธ์ ์ ๋ฌ์ ๊น๋ํ๊ณ ๋ถ๋ฆฌ๋ ๋ฐฉ์์ผ๋ก ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๊ฐ VC๋ Coordinator ์ ์ฐ๊ฒฐ๋์ด์์ต๋๋ค. ๊ทธ๋์ Coordinator๋ฅผ VC๊ฐ ์ค์ฌ์ ์ญํ ์ ํ๊ณ present์ dismiss๋ฅผ ์ ์ดํ๋ ์ญํ (ํ๋กํ ์ฝ)๋ก ๋ด๋ ๋ ๊ฒ ๊ฐ์ต๋๋ค ๊ฐ๋จํ ์์์ ๋๋ค. (์ 3๊ฐ์ง๋ฅผ ์ ์ฉ) Home VC์์ ํญํ์๋ Detail VC๋ก ๋์ด๊ฐ๋ ํ๋ฉด์ ํ์ Coordi..

์ฐ์ Launch Screen์๋ custom class, custom UI ๋ฑ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. (์ค์ง Storyboard + ๊ธฐ๋ณธ UI Component๋ง ์ฌ์ฉ ๊ฐ๋ฅ) ๊ทธ๋์ Launch Screen์ Gif(Custom Class)๋ ๋ฃ์ ์ ์๊ณ ๋์ ์ด๋ฐ์์ผ๋ก Launch Screen ์ดํ Custom Splash VC๋ฅผ ์ถ๊ฐํ์ฌ gif๋ฅผ 1 ~ 2์ด ์ฌ์ํ ๋ค Main VC๋ก ๊ฐ๋ ๋ฐฉ๋ฒ์ ์ ํํ ์ ์์ต๋๋ค. SceneDelegate์์ func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { guard let _ = (sce..

์ ์ฌ์ง ๊ฐ์ drop down ์ฒ๋ผ ๋ถ๋ชจ๋ทฐ์ ํ๋ ์์ ํ์์ด๊ณ ์์๋ทฐ๋ ์ด๋ก์ ์์ญ์ผ ๋ ๋ถ๋ชจ๋ทฐ์ ์์ญ์ธ (3)์ ์์๋ทฐ๋ ํฐ์น๊ฐ ๋๋๋ฐ (4)๋ ๋ถ๋ชจ์ ์์ญ ๋ฐ์ด๋ผ ํฐ์น๊ฐ ์๋ฉ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ ๋ทฐ ์์ฒด์์ ํฐ์น๋ฅผ ๊ฐ์งํ๋ ๋ฉ์๋๋ฅผ ์ฌ์ ์ํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. class CustomUIView: UIView { override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? { if !self.clipsToBounds && !self.isHidden && self.alpha > 0.0 { let subviews = self.subviews.reversed() for member in subviews { let subPoi..
๋ชฉ๋ก ์ฝ๋ AudioEngine setCategory, setMode - ์ค๋์ค ์์ง ์ ์ ์ฝ๋ ์์ฑ๊ฐ AVAudioSession.Category - ์ ์ถ๋ ฅ์ ์ด AVAudioSession.CategoryOptions - ๊ถํ์ฌ๋ถ AVAudioSession.Mode - ์ ๋ ฅ ๋ชจ๋์ ์ข ๋ฅ, ์ถ๋ ฅ ๋ชจ๋์ ์ข ๋ฅ AVAudioSession.Port - ์ ์ถ๋ ฅ ์ฅ์น ์ค๋์ค ์ ์ ์ฝ๋ Audio Engine setCategory, setMode - ์ค๋์ค ์์ง ์ ์ let audioSession = AVAudioSession.sharedInstance() do { try audioSession.setCategory(.playAndRecord, options: .allowBluetooth) try audioSessio..

1. Build With Timing Summary ๋น๋ ์๊ฐ์ ์์ฝํ๊ณ ์ต์ ํ ํด์ค๋ค๊ณ ํจ. 2. Xcode Build Setting ์์ ( TARGETS -> Build Setting ์์ ๊ฒ์ํ๋ฉด ๋์ด ) a) BUILD ACTIVE ARCHITECTURE ONLY Debug: Yes Release: No b) COMPILATION MODE Debug: Incremental Release: Whole Module c) OPTIMIZATION LEVEL Debug: No Optimization [-Onone] Release: Optimize for Speed [-O] d) DEBUG ..

๋ ํผ๋ฐ์ค raywenderlich tutorial, ์ ํ ๊ณต์๋ฌธ์ https://www.kodeco.com/632-ibeacon-tutorial-with-ios-and-swift https://developer.apple.com/ibeacon/Getting-Started-with-iBeacon.pdf https://developer.apple.com/documentation/corelocation/determining_the_proximity_to_an_ibeacon_device iBeacon์ด ์ ๊ณตํ๋ ์ ๋ณด iBeacon๋ UUID, major, minor์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์. iBeacon ์๋ณ 1. iBeacon์ ์ฌ์ฉํ๊ธฐ์ํด์ iBeacon์ UUID๋ฅผ Client์์ ์๊ณ ์์ด์ผํ๋ค. (๋ชจ๋ฅด๋ฉด ์..
VC๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ฑฐ๋ ์ํธ์์ฉ์ ํ๊ธฐ ์ํด์๋ next vc์ ๋ฐ์ดํฐ๋ฅผ ์ง์ ์ ์ผ๋ก ์ ๋ฌํ๊ฑฐ๋, delegate ๋ฐฉ์์ผ๋ก ์ ๋ฌ(https://ggasoon2.tistory.com/6) ๋๋ rxSwift subscribe binding(https://ggasoon2.tistory.com/25)๋ฑ์ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ trigger๋ฅผ ์ ๋ฌ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ๋ฐ VC๊ฐ ์ฌ๋ฌ๊ฐ ์ค์ฒฉ๋์ด ์์ ๊ฒฝ์ฐ delagte๋ subcrbie vm์ ์ ๋ฌํ๊ธฐ๊ฐ ์ฝ์ง๊ฐ ์์ ๊ฒ ๊ฐ์์. ๊ทธ๋ด ๊ฒฝ์ฐ Notifcation์ ์ด์ฉํ๋ฉด ๊ฐํธํ๊ฒ ๊ฑฐ๋ฆฌ๊ฐ ๋จผ VC์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ์ ์์ต๋๋ค. 1. Notification observable emit (๋ฐ์ ) NotificationCenter.default.post(name: ..
๊ธฐ์กด์ ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ฐฉ์์ (escaping completion ์ RxSwift single๋ก ๋ฆฌํฉํ ๋ง ์ดํ ํด๋น Single ํจ์๋ฅผ Fetch ํจ์ ๋ด๋ถ์์ ์ฌ์ฉ) async await ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ฐฉ์์ผ๋ก refactoring ํ๋ ๊ณผ์ ์ ๋๋ค. - ๊ธฐ์กด ์ฝ๋ (escaping completion + RxSwift single) Data - Repository - Search - Search User List API ์ ์ผ๋ถ // Data - Repository - Search - search user list ํจ์ ์์ private func lookUpRequest(userId: String, keyword: String, page: Int32 = 1, capacity: Int32 = 30, co..
- Total
- Today
- Yesterday
- ๊ณต๋ถ ํ์ด๋จธ ์ดํ
- swift filemanager excel
- swift network refactoring
- swift urlsession ๊ณตํตํ
- llm pdf rag
- readysay
- concurrency pagination
- swift urlsession refactoring
- ๋น๋๊ธฐ ๋ฆฌ์คํธ swift
- ios gitignore
- ๋ ๋์ธ์ด ์ดํ
- swift ์๊ฐ
- swift excel read
- ๋น๋๊ธฐ ํ์ด์ง swift
- chatgpt rag llm
- ๋ ๋์ธ์ด
- swift filemanager get excel
- rag llm pdf
- swift network ๊ณตํตํ
- filemanager excel read
- ์๋์ํํธ ๋ ์ด์ธ์ด
- rag ๊ธฐ๋ฐ llm
- swift network module
- swift ๋คํธ์ํฌ ๋ชจ๋ํ
- rag ๊ธฐ๋ฐ llm ์ฑ๋ด
- swift git ignore
- swift ์์ ๊ฐ์ ธ์ค๊ธฐ
- llm csv
- swift ์์ ์ฝ๊ธฐ
- swift get excel
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |