iOS 61

[ iOS ] UICollectionViewCell์—์„œ ImageView ์ดˆ๊ธฐํ™” ์‹œ์ ๊ณผ awakeFromNib()

์Šคํ† ๋ฆฌ๋ณด๋“œ๋ฅผ ํ†ตํ•ด ImageView๋ฅผ ๋ฐฐ์น˜ํ•ด์•ผํ•˜๋Š” ์ƒํ™ฉ์ด ์žˆ๋‹ค๊ณ  ํ•ฉ์‹œ๋‹ค. ๋ชจ์„œ๋ฆฌ์— ๋‘ฅ๊ทผ ํšจ๊ณผ๋ฅผ ์ฃผ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์Šคํ† ๋ฆฌ๋ณด๋“œ๋งŒ์œผ๋กœ๋Š” ํ•œ๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ์ฝ”๋“œ์—์„œ UIView.layer.cornerRadius๋ฅผ ์ ์šฉํ•ด ๋‘ฅ๊ทผ ๋ชจ์„œ๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์ด์ฒ˜๋Ÿผ ๋ณดํ†ต ์Šคํ† ๋ฆฌ๋ณด๋“œ์™€ ์ฝ”๋“œ๋Š” ํ•จ๊ป˜ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.UIViewController์—์„œ๋Š” ์•„์›ƒ๋ › ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ๋•Œ ๋ณดํ†ต viewDidLoad ๋‚ด๋ถ€์— ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ UICollectionViewCell์—์„œ ์•„์ดํ…œ์œผ๋กœ ๋‘ฅ๊ทผ ๋ชจ์„œ๋ฆฌ๋ฅผ ๊ฐ€์ง„ ImageView๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์–ด๋””์— ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?  ๋จผ์ € ์ด๋‹ˆ์…œ๋ผ์ด์ €๋ถ€ํ„ฐ ์ƒ๊ฐํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. UIView์˜ ์ด๋‹ˆ์…œ๋ผ์ด์ €๋Š” ๋‘ ๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.init(frame:)init(coder:)์Šคํ† ๋ฆฌ๋ณด๋“œ๋ฅผ ์‚ฌ์šฉํ•ด UI๋ฅผ..

iOS 2025.01.08

[ iOS ] Raw String

Raw StringRaw String์€ escape ๋ฌธ์ž์˜ ๋ถˆํŽธํ•จ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Swift5๋ถ€ํ„ฐ ์ง€์›ํ•˜๋Š” ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด ๊ตฌ๋ถ„ ๊ธฐํ˜ธ์ž…๋‹ˆ๋‹ค.escape ๋ฌธ์ž๋Š” ์œ ์šฉํ•˜๊ณ  ํ•„์ˆ˜์ ์ธ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€๋งŒ, escape ์‹œํ€€์Šค๊ฐ€ ํฌํ•จ๋œ ๋ฌธ์ž์—ด์€ ๊ฐ€๋…์„ฑ์ด ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ๋Š” “raw”, ์ฆ‰ ์›์‹œ ๊ทธ๋Œ€๋กœ์˜ ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด ๊ตฌ๋ฌธ์„ ๋Œ€์ฒด์ œ๋กœ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ raw string ๋ฆฌํ„ฐ๋Ÿด์€ escape ์—†์ด ๋ฐฑ์Šฌ๋ž˜์‹œ(\)์™€ ๋”๋ธ” ์ฟผํ„ฐ(”)๋ฅผ ํ†ตํ•ฉํ•˜์—ฌ “raw”ํ•œ ํ…์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.    Raw String ์ง€์› ๋ฐฐ๊ฒฝ swift-evolution/proposals/0200-raw-string-escaping.md at main · swiftlang/swift-evolutio..

iOS 2024.12.26

[ iOS ] Entry Point (initial view controller)

Entry PointEntry Point๋Š” ์ง„์ž…์ ์ด๋ผ๋Š” ๋œป์œผ๋กœ, ํ•œ ์Šคํ† ๋ฆฌ๋ณด๋“œ์—์„œ ์‹œ์ž‘ scene์ด ๋˜๋Š” view controller๋ฅผ ์„ค์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์—ฌ๋Ÿฌ view controller ์ค‘์—์„œ initial view controller๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•ฑ์€ ์—ฌ๋Ÿฌ ์Šคํ† ๋ฆฌ๋ณด๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ฐ ์Šคํ† ๋ฆฌ๋ณด๋“œ๋Š” ์‹œ์ž‘ ํ™”๋ฉด์ด ๋  view controller๊ฐ€ ์ง€์ •๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์•ฑ ์‹คํ–‰ ์‹œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.EntryPoint ๋ฏธ์„ค์ • ์˜ค๋ฅ˜Failed to instantiate the default view controller for UIMainStoryboardFile 'Main' - perhaps the designated entry point is not set? UI..

iOS 2024.12.25

[ Accessibility ] "์„ ํƒ๋จ" ์•ˆ๋‚ด ๋ฉ”์‹œ์ง€ ์ œ๊ฑฐํ•˜๊ธฐ (accessibilityTraits)

๋ฐฐ๊ฒฝCollectionView ๋˜๋Š” TableView(์ดํ•˜ List ์ปดํฌ๋„ŒํŠธ)์—์„œ select ๋™์ž‘ ์‹œ ํ•ด๋‹น ์•„์ดํ…œ์˜ ์ƒํƒœ๊ฐ€ “์„ ํƒ”์œผ๋กœ ์„ค์ •๋˜์–ด ๋™์ž‘ ๋ฐ ํ™•์ธ ์‹œ VoiceOver ์Œ์„ฑ์œผ๋กœ “์„ ํƒ๋จ”์ด ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.      ์ ‘๊ทผ์„ฑ ๋ฌธ์ œ์˜ ์›์ธApple์˜ ์˜๋„๋Š” ์•„์ดํ…œ์ด ์„ ํƒ๋˜์—ˆ์œผ๋‹ˆ๊น ํ•ด๋‹น ์•„์ดํ…œ์˜ ์ƒํƒœ๋ฅผ ์ถœ๋ ฅํ•ด ์ •ํ™•ํ•œ ์•ˆ๋‚ด๋ฅผ ํ•ด์ฃผ๊ณ ์ž ํ•จ์ด์ง€๋งŒ, ์ด๋Ÿฌํ•œ ์•ˆ๋‚ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์ž‘์— ๋Œ€ํ•œ ํ˜ผ๋™:“ํ•ด์ œ๋จ”์ด๋ผ๋Š” ๋ฐ˜๋Œ€ ๊ฐœ๋… ์กด์žฌ ์ธ์‹. (์˜ˆ, ์•ฝ๊ด€ ๋™์˜)์ถ”๊ฐ€ ๊ธฐ๋Šฅ ์กด์žฌ ์ธ์‹ (์˜ˆ, ์•จ๋ฒ” - ์‚ฌ์ง„ ์„ ํƒ, ์‚ฌ์ง„ ๋ชจ์•„ ๋ณด๋‚ด๊ธฐ)   ๊ตฌํ˜„ ๋ฐฉ๋ฒ•์ด "์„ ํƒ๋จ"์€ accessibilityTraits๊ฐ€ .selected ๋กœ ์„ค์ •๋˜์–ด ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์œผ๋กœ, accessibilityTraits ์„ค์ •์„ ํ†ตํ•ด ..

iOS/Accessibility 2024.12.18

[ iOS ] CompositionLayout ๋ฐฉํ–ฅ ์ดํ•ดํ•˜๊ธฐ

๐Ÿ“– CompositionalLayoutCollectionView์˜ CompositionalLayout์€ Section, Group, Item์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ Group์€ NSCollectionLayoutItem ์˜ ํ•˜์œ„ ํด๋ž˜์Šค์ด๊ธฐ ๋•Œ๋ฌธ์— Group ์•ˆ์— Group์ด ๋“ค์–ด๊ฐˆ ์ˆ˜๋„ ์žˆ๋‹ค.       ๐Ÿšฅ Section๊ณผ Group์˜ ๋ฐฉํ–ฅCompositionalLayout์—์„œ๋Š” Section์˜ ๋ฐฉํ–ฅ๊ณผ Group์˜ ๋ฐฉํ–ฅ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. Group์˜ item ๋ฐฐ์น˜ ๋ฐฉํ–ฅ์€ .vertical๊ณผ .horizontal ๋ฉ”์„œ๋“œ๋กœ ์ง€์ •ํ•ด์ค„ ์ˆ˜ ์žˆ๊ณ , Section์˜ scroll ๋ฐฉํ–ฅ์€ UICollectionViewCompositionalLayoutConfiguration์„ ํ†ตํ•ด ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.  ์œ„ ๊ทธ๋ฆผ์„..

iOS 2024.06.27

[ iOS ] ๋ฐ์ดํ„ฐ ์œ ๋ฌด์— ๋”ฐ๋ผ CollectionView UI ๋ณ€๊ฒฝํ•˜๊ธฐ with DiffableDataSource, Snapshot

๊ธ€์„ ๊ฒŒ์‹œํ•œ ์ดํ›„ ์ฝ”๋“œ์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฑธ ๋ฐœ๊ฒฌํ•ด ์ด๋ฅผ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค!๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ๊นŒ์ง€ ์‹œํ–‰์ฐฉ์˜ค๊ฐ€ ๊ถ๊ธˆํ•˜์‹œ๋‹ค๋ฉด ์ด ๊ธ€ ๋ด์ฃผ์„ธ์š”~ [ iOS ์‹œํ–‰์ฐฉ์˜ค ] CollectionView์— Cell์ด ํ•˜๋‚˜๋งŒ ๋ณด์ด๋Š” ์ด์œ ๐Ÿ‘ฉ‍๐Ÿ’ป๋ฐฐ๊ฒฝ๐Ÿ‘ฉ‍๐Ÿ’ปChapterList๋ฅผ ๊ฐœ๋ฐœํ•˜๋˜ ์ค‘, ๋ถ„๋ช… item์ด 3๊ฐœ๊ฐ€ ์žˆ๋Š”๋ฐ cell์ด 1๊ฐœ๋งŒ ๋ณด์ด๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค! ๊ทธ๋ž˜์„œ ์ด์ „์— ์ž‘์—…ํ–ˆ๋˜ BookList์—์„œ๋„ ํ™•์ธํ•ด ๋ณด๋‹ˆ ๋˜‘๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.. BookList88yhtserof.tistory.com         1๏ธโƒฃ ๊ตฌํ˜„ํ•˜๊ธฐ ์ „์— ๋จผ์ € ์•Œ์•„๋ณด๊ธฐ โ˜๏ธ ๊ตฌํ˜„ ๊ฐ„๋žต ์š”์•ฝCell๊ณผ Section, Item์„ BookList์™€ Empty ๋‘ ๊ฒฝ์šฐ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ, ๋ฐ์ดํ„ฐ ์œ ๋ฌด๋ฅผ ํ™•์ธํ•œ ํ›„ DiffableDataSource์— Cell์„ ๋“ฑ..

iOS 2024.06.17

[ iOS ] ์ž๋™ ์ฐธ์กฐ ์นด์šดํŒ…, ARC (Automatic Reference Counting)

์ž๋™ ์ฐธ์กฐ ์นด์šดํŒ… Automatic Reference Counting Swift๋Š” ์•ฑ์˜ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ถ”์ ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ž๋™ ์ฐธ์กฐ ์นด์šดํŒ…(ARC)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐœ๋ฐœ์ž๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์— ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์•„๋„ ๋œ๋‹ค. ARC์— ์˜ํ•ด ๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š๋Š” ์ธ์Šคํ„ด์Šค๋Š” ์ž๋™์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ• ๋‹น ํ•ด์ œ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ํ•˜์ง€๋งŒ ํด๋ž˜์Šค ๋“ฑ๊ณผ ๊ฐ™์ด ์ฐธ์กฐํƒ€์ž…์˜ ๊ฒฝ์šฐ ์ฐธ์กฐ ๊ด€๊ณ„์— ์˜ํ•ด ์ž๋™ ๋ฉ”๋ชจ๋ฆฌ๊ด€๋ฆฌ๊ฐ€ ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋‚ญ๋น„๋˜๋Š”๋ฐ, ์ด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜(memory leak)๋ผ๊ณ  ํ•œ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๋ฉด, ์‚ฌ์šฉํ•˜์ง€๋„ ์•Š๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์—†๋Š” ์ง์ด ๋ฐฉ ํ•œ ์ผ ์— ๊ณ„์† ์กด์žฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ARC ์˜ ์ž‘๋™์›๋ฆฌ ํด๋ž˜์Šค์˜ ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ, ARC๋Š” ํ•ด๋‹น ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ ์ฒญํฌ์— ํ• ๋‹น..

iOS 2024.03.27

[ iOS ] ํ™”๋ฉด ์บก์ณํ•˜๊ธฐ - UIGraphicsRenderer

๐Ÿ”ซ ๋ฌธ์ œ ๋ฐœ์ƒ iOS 17๊ฐ€ ๋ฐœํ‘œ๋˜๋ฉฐ, ์•ฑ์Šคํ† ์–ด์— ๋ฐฐํฌํ•œ ์„œ๋น„์Šค์— ํ˜น์‹œ deprecated๋œ ํด๋ž˜์Šค๋‚˜ ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์„๊นŒ ์‹ถ์–ด ์ฐพ์•„๋ดค๋‹ค. ์ •๋ง ์•ˆํƒ€๊น๊ฒŒ๋„ '์ด๋ฏธ์ง€ ๊ณต์œ ํ•˜๊ธฐ' ๊ธฐ๋Šฅ์—์„œ ์‚ฌ์šฉํ–ˆ๋˜ UIGraphicsBeginImageContextWithOptions(_:_:_:)๊ฐ€ iOS 17.0 ๋ฒ„์ „๊นŒ์ง€๋งŒ ์ œ๊ณต๋œ๋‹ค๊ณ  ํ•œ๋‹ค... ๊ทธ๋ž˜์„œ ์–ด๋–ป๊ฒŒ ๋ฒ„์ „ ์—…์„ ํ• ๊นŒ ๊ฑฑ์ •ํ•˜๋ฉฐ ๊ณต์‹ ๋ฌธ์„œ์—์„œ Graphic, Image, Render๋ฅผ ํ‚ค์›Œ๋“œ๋กœ ๋น„์Šทํ•œ ๊ธฐ๋Šฅ์„ ํ•˜๋Š” ํด๋ž˜์Šค ๋˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ฐพ์•„๋ดค๋‹ค. ๋‹คํ–‰ํžˆ ๋ฉ€์ง€ ์•Š๊ฒŒ Drawing ์นดํ…Œ๊ณ ๋ฆฌ์—์„œ UIGraphicsRenderer ํด๋ž˜์Šค๋ฅผ ๋ฐœ๊ฒฌํ–ˆ๋‹ค! ์ด์ œ ์ด ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ iOS 17 ์ดํ›„๋ฅผ ๋Œ€์‘ํ•˜๋Š” ๋ฆฌํŒฉํ† ๋ง์„ ์‹œ์ž‘ํ•ด๋ณด์ž. ๐ŸŽจ UIGraphicsRenderer UIGraphics..

iOS 2023.12.22

[ iOS ] ์—ด๊ฑฐํ˜•์˜ ์›์‹œ๊ฐ’์œผ๋กœ ํŠœํ”Œ ์‚ฌ์šฉํ•˜๊ธฐ

enum Direction: String { case up = "์ƒ" case down = "ํ•˜" case left = "์ขŒ" case right = "์šฐ" } let direction: Direction = .right print(direction.right) /// print "์šฐ" ์—ด๊ฑฐํ˜•์—๋Š” ์›์‹œ๊ฐ’(rawValue)์ด ์žˆ์–ด ์œ„์˜ ์˜ˆ์‹œ์ฒ˜๋Ÿผ ๊ฐ’์„ case๋ณ„๋กœ ๊ฐ’์„ ํ• ๋‹นํ•ด ํ•„์š”ํ•  ๋•Œ ๊บผ๋‚ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ํ•œ ๊ฐ€์ง€ ์œ ์˜ํ•  ์ ์€, ์ด ์›์‹œ๊ฐ’์€ Literal ํƒ€์ž…๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค. Literal์€ ๊ณต์‹๋ฌธ์„œ์—์„œ "์ˆซ์ž๋‚˜ ๋ฌธ์ž์—ด ๊ฐ™์€ ํƒ€์ž…์˜ ๊ฐ’ ํ‘œํ˜„"์ด๋ผ ์„ค๋ช…๋˜์–ด ์žˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๊ณ  ํƒ€์ž…์„ ๊ฐ–๊ณ  ์žˆ์ง€๋Š” ์•Š๋‹ค. ํ•˜์ง€๋งŒ literal์€ ์•„์ฃผ์•„์ฃผ ์ •ํ™•ํ•˜์—ฌ Swift์˜ ํƒ€์ž… ์ถ”๋ก  ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด ํƒ€์ž…์ด ์ถ”๋ก ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ..

iOS 2023.12.01

[ iOS ] MVC - 3 ) Controller ๊ฐ์ฒด

Controller object๋ฅผ ์ฝ๊ณ  ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. Controller object Retired Document Important: This document may not represent best practices for current development. Links to downloads and other resources may no longer be valid. Controller object A controller object acts as a coordinator or as an intermediary between one developer.apple.com Controller object Controller ๊ฐ์ฒด๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ทฐ ๊ฐ์ฒด์™€ ๋ชจ๋ธ ๊ฐ์ฒด ์‚ฌ์ด์˜ ์กฐ์ •์ž ๋˜๋Š” ์ค‘์žฌ์ž๋กœ์„œ ๋™์ž‘..

iOS 2023.11.18

[ iOS ] MVC - 2 ) Model ๊ฐ์ฒด

Model Object๋ฅผ ์ฝ๊ณ  ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. Model object Retired Document Important: This document may not represent best practices for current development. Links to downloads and other resources may no longer be valid. Model object A model object is a type of object that contains the data of an application, pro developer.apple.com Model object ๋ชจ๋ธ ๊ฐ์ฒด๋Š” MVC ๋””์ž์ธ ํŒจํ„ด ์ค‘ Model์— ํ•ด๋‹นํ•˜๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ๋ชจ๋ธ ๊ฐ์ฒด์˜ ์ฃผ์š” ์—ญํ• ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค: ๋ฐ์ดํ„ฐ ..

iOS 2023.11.18
728x90