popular posts

ํ”Œ๋กœํŒ… ํŒจ๋„
ยท
UIkit
import Foundationimport SwiftOnoneSupportimport UIKitimport _Concurrencyimport _StringProcessingimport _SwiftConcurrencyShimsimport osimport os.log/// ํŒจ๋„ ๋’ค์— ๋ฐฐ๊ฒฝ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ทฐ์ž…๋‹ˆ๋‹ค.@objc(FloatingPanelBackdropView) open class BackdropView : UIView { /// ํŒจ๋„์„ ํ•ด์ œํ•˜๊ธฐ ์œ„ํ•œ ํƒญ ์ œ์Šค์ฒ˜์˜ ์ œ์Šค์ฒ˜ ์ธ์‹๊ธฐ์ž…๋‹ˆ๋‹ค. /// /// ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด ์ œ์Šค์ฒ˜ ์ธ์‹๊ธฐ๋Š” iOS ๋ชจ๋‹ฌ์˜ ๊ธฐ๋ณธ ๋™์ž‘์„ ๋”ฐ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. /// ๋ฐฐ๊ฒฝ์„ ํƒญํ•˜์—ฌ ํŒจ๋„์„ ํ•ด์ œํ•˜๋ ค๋ฉด `dismissalTapGestureRec..
[ TeamProject ] ํ”„๋กœ์ ํŠธ ์ค€๋น„ _ ์นด์นด์˜ค๋งต api ๊ณต๋ถ€ํ•˜๊ธฐ!
ยท
Team Project
์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ ๋‚ด๊ฐ€ ๋‹ด๋‹นํ•œ ๋ถ€๋ถ„ : ์˜จ๋ผ์ธ ๋งต _ Kakao Map Api๋ณธ๊ฒฉ ํ”„๋กœ์ ํŠธ ์‹œ์ž‘ ์ „ ๊ณต๋ถ€ํ•  ๋‚ด์šฉ์นด์นด์˜ค ๋งต api ๊ณต์‹๋ฌธ์„œ ์‚ดํŽด๋ณด๊ธฐiOS์•ฑ์— ์ง€๋„ ํ‘œ์‹œํ•˜๊ณ  ๋งˆ์ปค ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์ง€๋„ ๊ธฐ๋ฐ˜ ์•ฑ ์ตœ์ ํ™”ย ,ย ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์™€ ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฐฐํ„ฐ๋ฆฌ ํšจ์œจ์„ฑ: ์œ„์น˜ ๊ธฐ๋ฐ˜ ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐฐํ„ฐ๋ฆฌ ์†Œ๋ชจ๋ฅผ ์ตœ์†Œํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ•™์ŠตMVVM ๋””์ž์ธ ํŒจํ„ด# ๊ณต๋ถ€ ์ฐธ๊ณ  ์ž๋ฃŒย - ์นด์นด์˜ค๋งต ๊ณต์‹ ๋ธ”๋กœ๊ทธ : https://kakaomap.tistory.com/- ์นด์นด์˜ค ๋งต api ์‚ฌ์šฉ๊ฐ€์ด๋“œ : https://apis.map.kakao.com/ios_v2/docs/ย ์นด์นด์˜ค๋งต ๊ณต์‹ ๋ธ”๋กœ๊ทธย kakaomap.tistory.com1. ํ”„๋กœ์ ํŠธ ์‹œ์ž‘ ์ค€๋น„์‚ฌํ•ญ๊ธฐ๋ณธ ์š”๊ตฌ์‚ฌํ•ญ- iOS 13 ์ด์ƒ ์‚ฌ์šฉ๊ฐ€๋ŠฅInstallation์นด์นด์˜ค๋งต Cocoa..
[ UIkit ] Custom circular progress bar ์›ํ˜• ํ”„๋กœ๊ทธ๋ ˆ์Šค๋ฐ” ๋งŒ๋“ค๊ธฐ
ยท
UIkit
1. CircularProgressBar ํด๋ž˜์Šค ์ƒ์„ฑ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํด๋ž˜์Šค๋กœ ์›ํ˜• ํ”„๋กœ๊ทธ๋ ˆ์Šค ๋ฐ”๋ฅผ ์ƒ์„ฑํ•ด๋‘๋ฉด, var progressBar = CircularProgressBar() ์ด๋Ÿฐ ์‹์œผ๋กœ ๊ฐ„ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.ย class CircularProgressBar: UIView { private let lineWidth: CGFloat = 3}ย ์ดˆ๊ธฐ ์„ค์ • : ํ”„๋กœ๊ทธ๋ ˆ์Šค ๋ฐ”์˜ ๋‘๊ป˜๋ฅผ ๊ฒฐ์ •ํ•จย 2. draw(_:) ๋ฉ”์„œ๋“œoverride func draw(_ rect: CGRect)UIView์˜ draw(_:) ๋ฉ”์„œ๋“œ๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋“œํ•˜์—ฌ ์ง์ ‘์ ์ธ ๊ทธ๋ž˜ํ”ฝ์„ ๊ทธ๋ฆผย let path = UIBezierPath()UIBezierPath๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒฝ๋กœ๋ฅผ ๊ทธ๋ฆฌ๊ธฐ ์œ„ํ•œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑlet radius = (rect.widt..

Latest Post

IT ๊ต์œกPM 2์ฃผ์ฐจ WIL [Weekly I learned]
ยท
TIL & WIL
๐Ÿˆ The four F ํšŒ๊ณ ๐Ÿ’ก FACTS (์‚ฌ์‹ค, ๊ฐ๊ด€)์ด๋ฒˆ ์ฃผ์—๋Š” โ€˜์ง„์ •์„ฑโ€™์ด๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ํŒ€์ŠคํŒŒ๋ฅดํƒ€์˜ ๊ฐ€์น˜๊ด€๊ณผ ์‹ค์ œ ์—…๋ฌด ๋ฐฉ์‹์ด ์–ด๋–ป๊ฒŒ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š”์ง€ ๋Œ์•„๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค.ํŠนํžˆ โ€œ์ข‹์€ ๋‚ด์šฉ์ด๋ฉด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ „๋‹ฌ๋˜๊ฒ ์ง€โ€๋ผ๋Š” ์ƒ๊ฐ์ด ์–ผ๋งˆ๋‚˜ ์œ„ํ—˜ํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ๋А๋ผ๋ฉฐ, ์ง„์ •์„ฑ์€ ๋‹จ์ง€ ํƒœ๋„์˜ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ ํ–‰๋™๊ณผ ์„ค๊ณ„ ์ „๋ฐ˜์— ๊ฑธ์ณ ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐฐ์› ๋‹ค.๋˜ ์ฒ˜์Œ์œผ๋กœ ๋ฐฉ๋Œ€ํ•œ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ๋ถ„์„ํ•ด๋ณด๋ฉด์„œ, ์ฃผ์ฐจ๋ณ„ ํ๋ฆ„์„ ์ฝ๊ณ  ๋ณ€ํ™”์˜ ๋ฐฉํ–ฅ์„ ํŒŒ์•…ํ•˜๋Š” ๊ฒฝํ—˜๋„ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.๋‚ด๊ฐ€ ์ด๋Ÿฐ๊ฑธ ํ•˜๊ฒŒ ๋  ์ค„์ด์•ผ? ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋  ์ค„์ด์•ผ? ์•„์ง ๋ฐ์ดํ„ฐ ๋ณด๋Š” ๊ฒŒ ์ต์ˆ™ํ•˜์ง€ ์•Š์•„ ์ „์ฒ˜๋ฆฌ ๊ณผ์ •์ด ์˜ค๋ž˜ ๊ฑธ๋ ค์„œ ๋„ˆ๋ฌด ๋งŽ์€ ์‹œ๊ฐ„์„ ํ• ์• ํ•ด์•ผ ํ•˜์ง€๋งŒ ์–ธ์  ๊ฐ€๋Š” ๋น ๋ฅด๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋‚ ์ด ์˜ค์ง€ ์•Š์„๊นŒ??????, ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ..
IT ๊ต์œกPM 1์ฃผ์ฐจ WIL [Weekly I learned]
ยท
TIL & WIL
์ด๋ฒˆ ์ฃผ๋Š” ๊ต์œก PM์„ ์ค€๋น„ํ•˜๋ฉฐ ๋‹ค์–‘ํ•œ ์•„ํ‹ฐํด๋“ค์„ ์ฝ๊ณ , ๊ทธ์— ๋งž๋Š” ๊ณผ์ œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด์„œ ์ •๋ง ๋งŽ์€ ๊ฒƒ์„ ๋ฐฐ์› ๊ณ ,์ƒˆ๋กœ์šด ๊ฐœ๋…์„ ๋ฐฐ์šฐ๊ณ  ๊ทธ ๊ณผ์ •์—์„œ ๋А๋‚€ ์ ๋“ค์„ 4L ํšŒ๊ณ  ํ˜•์‹์œผ๋กœ ์ •๋ฆฌํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๐Ÿˆ1. 4L ํšŒ๊ณ  โค๏ธ Liked (์ข‹์•˜๋˜ ์ )1์ฃผ์ฐจ ๊ต์œก์€ ๊ต์œก์šด์˜ ๋งค๋‹ˆ์ €๋ผ๋Š” ์—ญํ• ์— ๋Œ€ํ•ด ๋ณด๋‹ค ๊ตฌ์ฒด์ ์œผ๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ์‹œ๊ฐ„์ด์—ˆ๊ณ  ๊ทธ๋™์•ˆ์€ ๋ง‰์—ฐํ•˜๊ฒŒ๋งŒ ์•Œ๊ณ  ์žˆ๋˜ PM์ด๋ผ๋Š” ์ง๋ฌด๋ฅผ ์•„ํ‹ฐํด์„ ํ†ตํ•ด ์–ด๋–ค ์—ญ๋Ÿ‰์ด ํ•„์š”ํ•œ์ง€, ์‹ค์ œ๋กœ ์–ด๋–ค ์—…๋ฌด๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋˜๋Š”์ง€ ์กฐ๊ธˆ์”ฉ ๊ฐ์„ ์žก์„ ์ˆ˜ ์žˆ์—ˆ๋˜ ์ ์ด ์ •๋ง ์ข‹์•˜์Šต๋‹ˆ๋‹ค!๋˜ ํŒ€์ŠคํŒŒ๋ฅดํƒ€ ์ธํ„ด๋“ค์˜ ์•„ํ‹ฐํด์„ ๋ณด๋ฉด์„œ ํšŒ์‚ฌ๊ฐ€ ์ง€ํ–ฅํ•˜๋Š” ๋ฐฉํ–ฅ๊ณผ ๋ฌธํ™”, ์‹ค์ œ ๊ตฌ์„ฑ์›๋“ค์ด ์–ด๋–ค ์ผ๋“ค์„ ํ•˜๋Š”์ง€ ๋” ๊ฐ€๊นŒ์ด์„œ ๋А๊ปด๋ณผ ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ๋„ ํฐ ๋„์›€์ด ๋˜์—ˆ์–ด์š”. APM์œผ๋กœ ๊ทผ๋ฌดํ•˜๋ฉด์„œ๋„ ํšŒ์‚ฌ์˜ ๊ฐ€์น˜๊ด€์— ๋Œ€ํ•ด ..
1์ผ 1๋ฒฝ๋Œ ๐Ÿˆโ€โฌ›
ยท
Byeockdol๐Ÿˆโ€โฌ›
[ TIL ] ๊ฒฝ์Ÿ์‚ฌ ๋ถ„์„
ยท
TIL & WIL
์˜ค๋Š˜์˜ ์‹ค์Šต์€ ๋‹จ์ˆœํ•œ โ€˜์ž๋ฃŒ ์กฐ์‚ฌโ€™๋‚˜ โ€˜์•„์ด๋””์–ด ํšŒ์˜โ€™๋ฅผ ๋„˜์–ด, ์‹ค์ œ๋กœ PM(Product Manager)์˜ ์—…๋ฌด ํ๋ฆ„์„ ๊ฒฝํ—˜ํ•ด๋ณด๋Š” ์‹œ๊ฐ„์ด์—ˆ์Šต๋‹ˆ๋‹ค.๐Ÿ’ก PM์ด ํ•˜๋Š” ์ผ์€ ๋ญ˜๊นŒ์š”?์‚ฌ์šฉ์ž๋“ค์˜ ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ตดํ•˜๊ณ , ์ •์˜ํ•˜๊ณ , ํ”„๋กœ๋•ํŠธ๋กœ ๊ฐœ์„ ํ•˜๋Š” ์ „์ฒด ๊ณผ์ •์„ ์ด๊ด„ํ•˜๋Š” ์—ญํ• ์„ ํ•ด์š”. ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ์šฐ์„ ์ ์œผ๋กœ ๋˜์–ด์•ผ ํ•˜๋Š” ์—…๋ฌด๋“ค์„ ๊ด€๋ฆฌํ•˜๊ณ , ์ด๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ฐœ๋ฐœ์ž์™€ ๋””์ž์ด๋„ˆ์™€ ์†Œํ†ตํ•ด์„œ ์ŠคํŽ™์„ ์ •์˜ํ•˜๊ธฐ๋„ ํ•˜์ฃ . ์ด๋ ‡๊ฒŒ ๊ฐœ์„ ๋œ ๋‚ด์šฉ์€ ์œ ์ €์˜ ๋ถˆํŽธํ•จ์„ ํ•ด๊ฒฐํ•˜๊ณ  ๋‚˜์•„๊ฐ€ ๋น„์ฆˆ๋‹ˆ์Šค ์ž„ํŒฉํŠธ๋ฅผ ๋งŒ๋“ค์–ด๋‚ผ ์ˆ˜๋„ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.์ด๋ฅผ ์œ„ํ•ด ํƒ€ ํ”„๋กœ๋•ํŠธ ํŒ€์˜ ํ˜‘์กฐ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์˜์—…, ๋งˆ์ผ€ํŒ…, ๋ฒ•๋ฌด ๋“ฑ ์—ฌ๋Ÿฌ ๊ฒ€ํ†  ๊ณผ์ •์„ ๊ฑฐ์น˜๊ณ  ์˜์‚ฌ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๋Š” ์—ญํ• ์„ ํ•˜๊ณ  ์žˆ๊ธฐ๋„ ํ•˜์ฃ . ํ”„๋กœ๋•ํŠธ๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๊ณ  ๋‚œ ๋‹ค์Œ์—๋Š” ์‹ค์ œ ์œ ์ €์—๊ฒŒ ์ž˜ ์ž‘๋™ํ•˜..
[Swift ๋ฌธ๋ฒ•] 2 - 1. ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•
ยท
swift
๐Ÿ 1. ๊ธฐ๋ณธ ์ž๋ฃŒํ˜• (Primitive Types)โ—ป๏ธ 1) ์ •์ˆ˜ํ˜• (Integers)์ •์ˆ˜ํ˜•์€ ์†Œ์ˆ˜์ ์ด ์—†๋Š” ์ •์ˆ˜ ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒํ˜•์ž…๋‹ˆ๋‹ค. Swift๋Š” ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ์ •์ˆ˜ํ˜•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹คโ‘  Int : +, - ๋ถ€ํ˜ธ๋ฅผ ํฌํ•จํ•œ ์ •์ˆ˜var age: Int = 30โ‘ก UInt : - ๋ถ€ํ˜ธ๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๋Š” 0์„ ํฌํ•จํ•œ ์–‘์˜ ์ •์ˆ˜var count: UInt = 50*๐ŸŒˆ Int์™€ UInt ์ค‘ ์„ ํƒํ•ด ์‚ฌ์šฉ*ํ”Œ๋žซํผ์— ๋”ฐ๋ฅธ Int์˜ ์ตœ๋Œ“๊ฐ’(64๋น„ํŠธ ํ™˜๊ฒฝ์ด๋ผ๋ฉด Int64์˜ ์ตœ๋Œ“๊ฐ’) ์ด์ƒ UInt ์ตœ๋Œ“๊ฐ’ ๋ฏธ๋งŒ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ ์ด์™ธ ์—๋Š”, UInt๋ณด๋‹ค๋Š” Int ํƒ€์ž…์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋œ๋‹ค.์˜ˆ๋ฅผ ๋“ค์–ด 64๋น„ํŠธ์˜ ํ™˜๊ฒฝ์ด๋ผ๋ฉด Int64์˜ ์ตœ๋Œ“๊ฐ’๊ณผ UInt64์˜ ์ตœ๋Œ“๊ฐ’ ์‚ฌ์ด์˜ ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ด์™ธ์— ์ •์ˆ˜ ํƒ€์ž…์˜ ๊ฐ’์„..