๋ฐ˜์‘ํ˜•

์ „์ฒด ๊ธ€ 83

[ Swift ] Localization ์ ์šฉ ๋ฐ ๋ฐฉ๋ฒ•(feat.Today I Define)

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ ๊ฐœ์ธ ์•ฑ์„ ํ†ตํ•ด์„œ ์ ์šฉํ–ˆ๋˜ Localize ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค : ) ์ ์šฉ ๋ฐฉ๋ฒ• 1. Project - Info - Localizations์—์„œ + ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๊ณ  ์ ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ์–ธ์–ด๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. 2. ์–ด๋””์— ์ ์šฉํ•˜๊ณ  ์‹ถ์€์ง€ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. 3. Strings File ์ถ”๊ฐ€ํ•˜๊ธฐ (ํŒŒ์ผ ์ด๋ฆ„์€ Localizable๋กœ ๋งŒ๋“ค๊ธฐ) 4. ์šฐ์ธก ์ฐฝ(Inspector)์—์„œ ์ง€์›ํ•˜๊ณ ์ž ํ•˜๋Š” ์–ธ์–ด๋ฅผ ์„ ํƒํ•˜๊ธฐ ์—ฌ๊ธฐ์„œ ์Šคํ† ๋ฆฌ๋ณด๋“œ์˜ ๊ฒฝ์šฐ์—๋Š” ์กฐ๊ธˆ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์Šคํ† ๋ฆฌ๋ณด๋“œ๋„ ์ฒดํฌํ–ˆ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด Localize ํŒŒ์ผ์ด ์ƒ๊ฒผ์„ ํ…๋ฐ ํ•ด๋‹น localizable ํŒŒ์ผ์— ๋“ค์–ด๊ฐ€ ๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๋‚ด์šฉ์ด ์ž‘์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. /* Class = "UILabel"; text = "์„ค์ •"; ObjectID =..

[ Git & Github ] PR์‹œ ๋ฐœ์ƒํ•˜๋Š” Conflict ํ•ด๊ฒฐํ•˜๊ธฐ

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ PR์‹œ์— ๋ฐœ์ƒํ•˜๋Š” Conflict๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์ž‘์„ฑํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค : ) ์•„์ง์€ Git์„ ๋‹ค๋ฃจ๋Š” ๊ฒŒ ์–ด๋ ค์›Œ์„œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ๋•Œ๋งˆ๋‹ค ์ •๋ฆฌํ•ด๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์•„์ง์€ ํŠน๋ณ„ํ•œ ๋‚ด์šฉ์ด ์—†์ง€๋งŒ ๊ทธ๋ž˜๋„ ๊ธฐ๋ก ์ค‘์ด๋‹ˆ ํ•„์š”ํ•˜์‹  ๋ถ„๋“ค์€ ๋ณด์…”๋„ ์ข‹์Šต๋‹ˆ๋‹ค. Git & Github A new tool for teams & individuals that blends everyday work apps into one. jasper-atom-7c6.notion.site 1. ๋™์ผ ์ €์žฅ์†Œ์—์„œ branch ๊ฐ„์˜ conflict - Pull Request ํƒ€๊ฒŸ ๋ธŒ๋žœ์น˜์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ Pull Request source ๋ธŒ๋žœ์น˜๋กœ ๊ฐ€์ ธ์˜ค๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. feature/* ๋ธŒ๋žœ์น˜์—์„œ master ๋ธŒ๋žœ์น˜..

Git & Github 2022.09.24

[ Xcode ] ์ž๋™์™„์„ฑ์ด ์ž‘๊ฒŒ ๋ณด์ธ๋‹ค๊ณ ? ( automatic completion size )

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ ์ œ๊ฐ€ ๊ฒช์—ˆ๋˜ Xcode์˜ ๋ฒ„๊ทธ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋˜ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค : ) ๋ฉ€์ฉกํ•˜๋˜ Xcode๊ฐ€ ๊ฐ‘์ž๊ธฐ ์ž๋™์™„์„ฑ ์ฐฝ์ด ํ•œ ์ค„๋กœ๋งŒ ํ‘œ์‹œ๋˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์™œ ๊ทธ๋Ÿฌ๋Š”์ง€ ๊ถ๊ธˆํ•ด์„œ ์—ฌ๊ธฐ์ €๊ธฐ ๋‘˜๋Ÿฌ๋ณด๋‹ˆ Xcode 10.3 ์ด์ƒ์ด๋ผ๋ฉด ๋งˆ์šฐ์Šค๋ฅผ ํ†ตํ•ด ์‚ฌ์ด์ฆˆ๋ฅผ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•˜๋”๋ผ๊ณ ์š”. ๊ทธ๋ž˜์„œ ์ง์ ‘ ํ•ด๋ดค๋Š”๋ฐ ๊ฐ€๋กœํญ ๋ฐ–์— ๋ณ€๊ฒฝ์ด ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค : ( ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜๋Š”๋ฐ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆœ์„œ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆœ์„œ 1. Xcode - Preferences - Text Editing - Suggest Completion while type์„ ์ฒดํฌ ํ•ด์ œํ•˜๊ธฐ 2. Xcode ์žฌ ์‹คํ–‰ํ•˜๊ธฐ 3. Xcode - Preferences - Text Editing - Suggest Com..

iOS/Xcode 2022.09.23

[ Git & Github ] Upstream๊ณผ Downstream์€ ๋ญ˜๊นŒ?

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ upstream๊ณผ downstream์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค : ) Upstream & Downstream ์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ๋ณด๋Š” origin์€ github์— ์กด์žฌํ•˜๋Š” repository๋กœ remote๋ฅผ ๋œปํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ, remote ๋Œ€์‹  origin์ด๋ผ๊ณ  ๋ช…๋ช…ํ•œ ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค. upstream๊ณผ downstream์€ ์ƒ๋Œ€์ ์ธ ๊ฐœ๋… origin๊ณผ local์„ ๊ธฐ์ค€์œผ๋กœ origin : upstream local : downstream push์™€ pull์„ ๊ธฐ์ค€์œผ๋กœ ์ƒ๊ฐํ•ด ๋ณด๋ฉด local์—์„œ origin์œผ๋กœ ํ๋ฆ„์ด ๋ฐœ์ƒ : push → upstream origin์—์„œ local๋กœ ํ๋ฆ„์ด ๋ฐœ์ƒ : pull → downstream git push -u origin main // ์—ฌ๊ธฐ์„œ -u๊ฐ€ ๋œปํ•˜..

Git & Github 2022.09.22

[ Swift ] UITableViewCell์˜ ๊ฐ„๊ฒฉ์„ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ ๋งค๋ฒˆ ๊นŒ๋จน๊ณ  ๋‚˜์„œ ๋‹ค์‹œ ์ฐพ๊ฒŒ ๋˜๋Š” UITableViewCell์˜ ๊ฐ„๊ฒฉ์„ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด๋‘๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค : ) 1. Layoutsubviews - ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋Š” UIView๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋กœ์„œ ํ•˜์œ„ ๋ทฐ๋“ค์˜ ์ •ํ™•ํ•œ ๋ ˆ์ด์•„์›ƒ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ override ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. - ์ด ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด์„œ TableViewCell์˜ ContentView์˜ ๋ ˆ์ด์•„์›ƒ์„ ์ˆ˜์ •ํ•จ์œผ๋กœ์จ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. 2. ๋ฐฉ๋ฒ• - ์œ„์—์„œ ๋งํ•œ ๊ฒƒ์ฒ˜๋Ÿผ TableViewCell ์•ˆ์—๋Š” ContentView๋ผ๋Š” UIView๊ฐ€ ์กด์žฌํ•˜๊ณ , ์ด๊ณณ์— ์›ํ•˜๋Š” ์ด๋ฏธ์ง€๋‚˜ ํ…์ŠคํŠธ ๋“ฑ์„ ์ถ”๊ฐ€ํ•˜๋ฉด์„œ Custom ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด layoutSubviews ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด ContentView์˜ ์œ„์น˜๋ฅผ..

iOS/Swift 2022.09.21

[ Swift ] UIProgressView์—์„œ CornerRadius๋ฅผ ์กฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ UIProgressView์—์„œ TrackView์™€ Progress์˜ ConerRadius๋ฅผ ์กฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค : ) ์ผ๋‹จ ProgressView๋ฅผ ์ƒ์„ฑํ•˜๊ณ  Subviews๋ฅผ ์ถœ๋ ฅํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜์˜ค๋Š” ๊ฑธ ํ™•์ธํ•˜ ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. [, ] ๋‘ ๊ฐœ์˜ ImageView๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ ์ฒซ ๋ฒˆ์งธ๋Š” TrackView, ๋‘ ๋ฒˆ์งธ๋Š” ์•ˆ์ชฝ์˜ Progress์— ํ•ด๋‹นํ•˜๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. 1. ๊ธฐ๋ณธ์ ์ธ ProgressView์˜ ๋ชจ์Šต - ProgressView์˜ TrackView์™€ Progress์˜ ์ปฌ๋Ÿฌ๋งŒ ์ •ํ•ด์ค€ ๊ฒฝ์šฐ progressView.trackTintColor = UIColor.lightGray progressView.progressTintColor = UIColor.red pr..

iOS/Swift 2022.09.20

[ Swift ] UITextField์˜ ์ขŒ์šฐ ํŒจ๋”ฉ์„ ์ฃผ๋Š” ๋ฐฉ๋ฒ•

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ UITextField์˜ ์ขŒ์šฐ ํŒจ๋”ฉ์„ ์ฃผ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค : ) ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์—์„œ ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. UITextField์— cornerRadius๋ฅผ ์ฃผ๊ณ  ํ™•์ธํ•ด ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ปค์„œ๊ฐ€ ๊ณต๊ฐ„ ์—†์ด ๋ฐ”๋กœ ์•ž์— ์œ„์น˜ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ฐฉ๋ฒ• Apple Developer Documentation developer.apple.com Apple์—์„œ์˜ ์˜๋„๋Š” ์ขŒ์ธก์ด๋‚˜ ์šฐ์ธก์— ๋ฒ„ํŠผ๊ณผ ๊ฐ™์€ component๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ๊ฒŒ Overlay ๋ทฐ๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ์†์„ฑ์€ ๋‹ค์Œ ํ”„๋กœํผํ‹ฐ๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. 1. leftView 2. rightView ์ด๋ฅผ width๋ฅผ ๊ฐ€์ง„ ๋ทฐ๋ฅผ ๋งŒ๋“ค์–ด ๊ฐ๊ฐ์— ๋„ฃ์–ด ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ๊ตฌํ˜„ํ•œ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. func setUserInfoTextField() ..

iOS/Swift 2022.09.19

[ Swift ] UIStackView์—์„œ ์—ฌ๋Ÿฌ ๋ฒ„ํŠผ์„ ์ •๋ ฌํ•˜๋Š” ๋ฐฉ๋ฒ•

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ UIStackView์—์„œ ์—ฌ๋Ÿฌ ๋ฒ„ํŠผ์„ ์ •๋ ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค : ) UIStackView UIStackView๋Š” ์„œ๋ธŒ ๋ทฐ๋“ค์„ ์Œ“์•„์„œ ๋™์ ์œผ๋กœ ๋‚ด๋ถ€ ํฌ๊ธฐ๋‚˜ ์œ„์น˜๋ฅผ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“  UIView์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์†์„ฑ๋“ค์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ ํ•˜๋‚˜์”ฉ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 1. Axis - ์–ด๋–ค ๋ฐฉํ–ฅ์œผ๋กœ ์„œ๋ธŒ ๋ทฐ๋“ค์„ ๋†“์„ ๊ฒƒ์ธ์ง€ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - Horizontal ํ˜น์€ Vertical๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 2. Spacing - ๊ฐ ์„œ๋ธŒ๋ทฐ๋“ค์˜ ๊ฐ„๊ฒฉ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. 3. Alignment - ์„œ๋ธŒ ๋ทฐ๋“ค์˜ ์ •๋ ฌ๋ฐฉ๋ฒ•์„ ๊ฒฐ์ •ํ•˜๋Š” ์†์„ฑ์ž…๋‹ˆ๋‹ค. - ๊ธฐ์กด์— ์ •ํ•ด๋‘์—ˆ๋˜ Axis์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ์ •๋ ฌ๋ฉ๋‹ˆ๋‹ค. (1) Horizontal Fill: StackView์˜ ๋†’์ด๋งŒํผ ์„œ๋ธŒ ๋ทฐ๋“ค์˜ ๋†’์ด๊ฐ€..

iOS/Swift 2022.09.18

[ Xcode ] Package.resolved file is corrupted or malformed ์—๋Ÿฌ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ Package.resolved file is corrupted or malformed ์—๋Ÿฌ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค : ) ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• Package.resolved ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๊ณ  ๋‹ค์‹œ ์—ด๊ณ  ๋นŒ๋“œํ•˜๊ธฐ 1. Finder์—์„œ Shift + Cmd + . ์„ ์ด์šฉํ•ด ์ˆจ๊ฒจ์ง„ ํŒŒ์ผ ๋ฐ ํด๋”๋ฅผ ํ‘œ์‹œ 2. Package.resolved ํŒŒ์ผ์€ .xcodeproj ์•ˆ์— ์žˆ์Šต๋‹ˆ๋‹ค. [appName].xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved 3. .xcodeproj ๋ฐ project.xcworkspace๋ฅผ ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ์œผ๋กœ ํด๋ฆญํ•˜์—ฌ ํŒจํ‚ค์ง€ ๋‚ด์šฉ ๋ณด๊ธฐ ํด๋ฆญ 4. Package.resolved ํŒŒ์ผ์„ ํœด..

iOS/Xcode 2022.09.17

[ Swift ] ๊ฐ„๋‹จํ•œ ํ† ์ŠคํŠธ ๋ฉ”์„ธ์ง€ ๊ตฌํ˜„ํ•˜๊ธฐ (feat.UILabel)

์•ˆ๋…•ํ•˜์„ธ์š”~ ์ •๋ง ์˜ค๋ž˜๊ฐ„๋งŒ์— ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ…์„ ํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ† ์ŠคํŠธ ๋ฉ”์‹œ์ง€๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค : ) 1. UILabel ์ปค์Šคํ…€ํ•˜๊ธฐ drawText(in:)์€ Label์˜ text๊ฐ€ ๊ทธ๋ ค์งˆ ๋•Œ rect์— ๊ด€ํ•œ ๊ฐ’์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋กœ Override ํ•ด์„œ ์‚ฌ์šฉํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด๋•Œ, drawText(in:)์—์„œ padding๊ฐ’์„ ์„ค์ •ํ•˜์‹œ๊ฒŒ ๋˜๋ฉด ๋ฌธ์ž์™€ Label ์‚ฌ์ด์— ๊ณต๊ฐ„์ด ์ƒ๊ธฐ๊ณ  ํ† ์ŠคํŠธ ๋ฉ”์„ธ์ง€ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. final class ToastLabel: UILabel { // ์ƒํ•˜์ขŒ์šฐ์˜ ์–ผ๋งˆ์˜ ํŒจ๋”ฉ๊ฐ’์„ ์ค„์ง€ UIEdgeInsets ๋ณ€์ˆ˜ ์ƒ์„ฑ private var padding = UIEdgeInsets(top: 8.0, left: 8.0, bottom: ..

iOS/Swift 2022.09.16
๋ฐ˜์‘ํ˜•