Swift 47

[ iOS ] CollectionView์˜ Section ์ˆจ๊ธฐ๊ธฐ - CompositionalLayout

CollectionView์˜ Section CollectionView๋Š” ์—ฌ๋Ÿฌ Section์„ ๋‘˜ ์ˆ˜ ์žˆ๋‹ค. ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ๋Š” App Store์ด๋‹ค. ์•„๋ž˜ ์‚ฌ์ง„์„ ๋ณด๋ฉด ์•„๋ž˜๋กœ๋„ ์Šคํฌ๋กค์ด ๋˜๋ฉฐ ์—ฌ๋Ÿฌ ๋‹จ๋ฝ์œผ๋กœ ๋‚ด์šฉ์ด ๋‚˜๋‰˜์–ด์ ธ ์žˆ๊ณ  ๊ฐ ๋‹จ๋ฝ์ด ๊ฐ€๋กœ๋กœ ์Šคํฌ๋กค์ด ๋˜์–ด ์—ฌ๋Ÿฌ ์•„์ดํ…œ๋“ค์„ ๋ณด์—ฌ์ค€๋‹ค. ์•ฑ์Šคํ† ์–ด์ฒ˜๋Ÿผ ํ•ญ์ƒ collectionView์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์ง€๋งŒ ๋ฉ”๋ชจ, ๋‹ค์ด์–ด๋ฆฌ๋ฅผ ์ €์žฅ ๋ชฉ์  CollectionView๋Š” ๋ฐ์ดํ„ฐ ์ €์žฅ ์ „์ด๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค ์‚ญ์ œํ•œ ๊ฒฝ์šฐ์—๋Š” CollectionView๊ฐ€ ๋ฐ์ดํ„ฐ ์—†์ด ๋นˆ ๊ณต๊ฐ„์œผ๋กœ ์žˆ์–ด์•ผ ํ•œ๋‹ค. Section์ด ํ•˜๋‚˜๊ฑฐ๋‚˜ ๋งˆ์ง€๋ง‰ Section์ด๋ผ๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋”๋ผ๋„ ๋ฌธ์ œ๋˜์ง€ ์•Š์ง€๋งŒ ์ฒซ ๋ฒˆ์งธ ๋˜๋Š” ์ค‘๊ฐ„ Section์ด๋ผ๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์„ ๊ฒฝ์šฐ ๋‹ค์Œ Section๊นŒ์ง€ ๊ทธ์ € ํ……..

iOS 2023.03.06

[ iOS ์‹œํ–‰์ฐฉ์˜ค ] CollectionView์˜ Section ์ˆจ๊ธฐ๊ธฐ -CompositionalLayout

๐Ÿ‘ฉ‍๐Ÿ’ป๋ฐฐ๊ฒฝ๐Ÿ‘ฉ‍๐Ÿ’ป ์›๋ž˜ Section์ด ํ•œ ๊ฐœ์˜€๋˜ collection view๋ฅผ ๋‘ ๊ฐœ๋กœ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ ์•„์ดํ…œ์ด ์•„๋ฌด๊ฒƒ๋„ ์—†์œผ๋ฉด ๊ทธ๋ƒฅ ํ……- ๋นˆ ๊ณต๊ฐ„์ด ๋‚จ๊ฒŒ ๋˜์–ด ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์ด ์ข‹์ง€ ์•Š์„ ๊ฒƒ ๊ฐ™์•„ ์•„์ดํ…œ์ด ์—†์„ ๊ฒฝ์šฐ Section์„ ์ˆจ๊ธฐ๊ณ ์ž ๊ณ„ํšํ–ˆ๋‹ค. How to deal with empty items section Section์„ ์ ‘๋Š” ๊ฑด ์ž์ฃผ ๋ณด์ด๋Š” ๊ธฐ๋Šฅ์ด์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ„๋‹จํ•˜์ง€ ์•Š์„๊นŒ ์ƒ๊ฐํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ด€๋ จ ๋ฉ”์„œ๋“œ๋‚˜ ํ”„๋กœํผํ‹ฐ๊ฐ€ ์žˆ์ง€ ์•Š์„๊นŒ ๊ณต์‹๋ฌธ์„œ์„ ์—ด์‹ฌํžˆ ์ฐพ์•„๋ณด์•˜์ง€๋งŒ ์ข‹์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์ง€ ๋ชปํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‹ค์‹œ ๋˜ ์—ด์‹ฌํžˆ ๊ตฌ๊ธ€๋ง์„ ํ–ˆ๋‹ค. ๋‚ด๊ฐ€ ์ž์ฃผ ๋ดค๋˜ Section ์ˆจ๊น€ ๊ธฐ๋Šฅ์€ ๋ณดํ†ต TableView๋ฅผ ํ™œ์šฉํ•œ ๊ฒƒ์ด๊ฑฐ๋‚˜ FlowLayout์„ ์‚ฌ์šฉํ•œ ๋ฐฉ๋ฒ•์ด์—ˆ๋Š”๋ฐ, ๋‚˜๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ Section์„ ์—ฌ๋Ÿฌ ๊ฐœ ๋งŒ๋“ค ๊ณ„ํš์ด..

[ iOS ์‹œํ–‰์ฐฉ์˜ค ] CollectionView ๋ฐ์ดํ„ฐ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ (Performing reloadData as a fallback — Invalid update)

๐Ÿ‘ฉ‍๐Ÿ’ป๋ฐฐ๊ฒฝ๐Ÿ‘ฉ‍๐Ÿ’ป CollectionView๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด cell ์‚ญ์ œ, ์ถ”๊ฐ€, ๋ณ€๊ฒฝ ๋“ฑ ๋‹ค์–‘ํ•œ ์ด์œ ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋•Œ reloadData, reloadSection, deletedItem, insertItem ๋“ฑ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ๊ด€๋ จํ•˜์—ฌ CollectionView์˜ ๋ ˆ์ด์•„์›ƒ์„ ์—…๋ฐ์ดํŠธํ•ด์ฃผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์œ ํšจํ•˜์ง€ ์•Š์€ ์—…๋ฐ์ดํŠธ [UICollectionView] Performing reloadData as a fallback — Invalid update: invalid number of items in section 0. ... deleteItem ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด CollectionView๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ ค ํ•˜๋Š”๋ฐ ์œ„์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  collectionView์— ์–ด๋– ํ•œ ๋ณ€ํ™”๋„ ์—†์—ˆ๋‹ค..

[ iOS ] ScrollView ํ™”๋ฉด ์บก์ณํ•˜๊ธฐ (Image Creation)

๋ฌธ์ œ๋ฌด๋‹ค, ๊พธ์ฃผ๋‹ˆ ๋“ฑ ๋ช‡๋ช‡ ์•ฑ๋“ค์€ ํ™”๋ฉด์„ ์บก์ณํ•œ ๋“ฏ ์ด๋ฏธ์ง€ํ™”ํ•ด ์ €์žฅ ๋˜๋Š” ๊ณต์œ ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ์˜ค๋Š˜์€ ์ด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์˜ˆ์ •์ธ๋ฐ, ํ™”๋ฉด ์บก์ณ์—์„œ ๋” ๋‚˜์•„๊ฐ€ ํ™”๋ฉด ๋ฐ– ์•„๋ž˜๋กœ ๋‚ด์šฉ์ด ๊ณ„์† ์ด์–ด์ง€๋Š” ScrollView์˜ ์ „์ฒด ํ™”๋ฉด์„ ์บก์ณํ•˜๋Š”, ์ฆ‰ ์ด๋ฏธ์ง€ํ™”ํ•˜๋Š” ์ž‘์—…์„ ์ •๋ฆฌํ•  ๊ฒƒ์ด๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜์—ฌ UIActivityViewController๋ฅผ ์‚ฌ์šฉํ•ด ์ด๋ฏธ์ง€๋ฅผ ์ธ์Šคํƒ€๊ทธ๋žจ์— ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค. UIGrapics~UIKit์—๋Š” Image์™€ PDF ์„ ์ƒ์„ฑํ•˜๊ณ  Drawing ํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ํด๋ž˜์Šค์™€ ํ•จ์ˆ˜๋“ค์„ ์ œ๊ณตํ•œ๋‹ค. ์ด๋ฒˆ์— ์•Œ์•„๋ณผ ํ•จ์ˆ˜๋Š” Image์™€ PDF์˜ Image Creation ํŒŒํŠธ์— ๋‚˜์˜ค๋Š” ํ•จ์ˆ˜ ์ค‘ ์•„๋ž˜ 3๊ฐœ์™€ Drawing์˜ Shadows/Graphics Context Promitives์˜ ํ•จ์ˆ˜..

iOS 2023.02.18

[ iOS/Git ์‹œํ–‰์ฐฉ์˜ค ] Push๋œ Info.plist๋ฅผ .gitignore์— ํ• ๋‹นํ•˜๊ธฐ

๐Ÿ‘ฉ‍๐Ÿ’ป๋ฐฐ๊ฒฝ๐Ÿ‘ฉ‍๐Ÿ’ป ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋‹ค๋ณด๋ฉด ํ† ํฐ ๋“ฑ ๊ฐœ์ธ ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. Local ์ €์žฅ์†Œ์—์„œ๋งŒ ์ž‘์—…ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๊ฐœ์ธ ์ •๋ณด ๋ณดํ˜ธ์— ๋Œ€ํ•ด ํฌ๊ฒŒ ์‹ ๊ฒฝ ์“ธ ํ•„์š”๊ฐ€ ์—†์ง€๋งŒ, Github๊ณผ ๊ฐ™์€ ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ๋งŒ์•ฝ ๋ฏธ์ฒ˜ ์‹ ๊ฒฝ ์“ฐ์ง€ ๋ชปํ•˜๊ณ  ๊ฐœ์ธ ์ •๋ณด๋ฅผ ์›๊ฒฉ ์ €์žฅ์†Œ์— ์˜ฌ๋ฆฌ๊ฒŒ ๋œ๋‹ค๋ฉด ํ•ดํ‚น์˜ ๋Œ€์ƒ์ด ๋  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  bundle์„ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ๋„ ๊น”๋”ํ•ด์ง€๊ณ  ๋ฐ์ดํ„ฐ ์‚ฌ์šฉ๋„ ํŽธ๋ฆฌํ•ด์„œ ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฒˆ๋“ค๋กœ ๊ด€๋ฆฌํ•˜๋ฉด ์ข‹๋‹ค. ์ด์™€ ๊ฐ™์€ ์ด์œ ๋กœ ์ค‘์š”ํ•œ ์ •๋ณด๋“ค์„ Info.plist ๋„ฃ๊ณ  ์ด plist ํŒŒ์ผ์„ .gitignore์— ์ถ”๊ฐ€ํ•˜๋ ค ํ–ˆ๋‹ค .gitignore์— ํŒŒ์ผ ์ถ”๊ฐ€ํ•˜๊ธฐ .gitignore์— ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ์ •๋ง ๊ฐ„๋‹จํ•˜๋‹ค. .gitignore ํŒŒ์ผ์„ ์—ด๊ณ  ์›ํ•˜๋Š”..

[ iOS ] UserDefaults - ์ปค์Šคํ…€ ํƒ€์ž… ์ €์žฅํ•˜๊ธฐ (Attempt to insert non-property list object ์˜ค๋ฅ˜)

UserDefaults์™€ non-property list ์˜ค๋ฅ˜ UserDefaults๋Š” Float, Double, Int, URL ๋“ฑ ๊ธฐ๋ณธ ํƒ€์ž…์— ๋Œ€ํ•œ ํŽธ๋ฆฌํ•œ ๋ฉ”์„œ๋“œ๋“ค์„ ์ œ๊ณตํ•œ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ NSData, NSString, NSNumber, NSDate, NSArray, NSDictionary ํƒ€์ž…์ด๋ผ๋ฉด UserDefaults์— ์ž์œ ๋กญ๊ฒŒ ์ €์žฅ ๋ฐ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐœ๋ฐœ์„ ํ•  ๋•Œ์—๋Š” ๋ณดํ†ต ์•„๋ž˜ ์˜ˆ์‹œ์™€ ๊ฐ™์ด ์ปค์Šคํ…€ํ•œ ํƒ€์ž…์„ ์‚ฌ์šฉํ•œ๋‹ค. struct User { let name: String let age: String } ์ด ์ปค์Šคํ…€ ํƒ€์ž…์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด UserDefaults์— ์ €์žฅํ•ด๋ณด์ž. let user = User(name: "์‚ฌ์šฉ์ž", age: "12") Userdeafaults.standard.se..

iOS 2023.01.21

[ iOS ] Property list

Property list property list๋Š” ๊ฐ์ฒด ์ง๋ ฌํ™”๋ฅผ ์œ„ํ•œ ํŒŒ์ผ์ด๋‹ค. plist๋ผ๋Š” ํ™•์žฅ์ž๋ฅผ ๊ฐ€์ง€๋ฉฐ ์šฐ๋ฆฌ๊ฐ€ ์•„๋Š” info.plist๊ฐ€ ๋ฐ”๋กœ property list์ด๋‹ค. property list๋Š” ์šฉ๋Ÿ‰์ด ์ž‘๊ณ  ์ƒ์„ฑํ•˜๊ธฐ ์‰ฌ์šฐ๋ฉฐ serialization ์ž‘์—…์ด ์šฉ์ดํ•˜๋‹ค. Cocoa Foundation๊ณผ Core Foundation์€ property list๋ฅผ serializarionํ•˜๊ณ  deserializationํ•˜๋Š”๋ฐ ๊ด€๋ จํ•œ APIs์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. Property list : dictionaries, arrays, strings, numbers (integer and float), dates, binary data, and Boolean values + [ Swift ] Serializati..

iOS 2023.01.20

[ Swift ] Serialization์ด๋ž€?

๊ฒ€์ƒ‰์„ ํ†ตํ•ด ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ถ€์ •ํ™•ํ•  ์ˆ˜๋„ ์žˆ๊ณ  ์ถ”ํ›„ ์ถ”๊ฐ€ ๊ณต๋ถ€๋ฅผ ํ†ตํ•ด ๋‚ด์šฉ์ด ๋ณ€๊ฒฝ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. Serialization์ด๋ž€? Serializtion์„ ๋ฒˆ์—ญํ•˜๋ฉด '์ง๋ ฌํ™”'์ด๋‹ค. ์ง๋ ฌํ™”๋ž€ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•˜์ž๋ฉด ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ์ด ํ˜•ํƒœ๊ฐ€ ์ง๋ ฌ์ (์‹œ๊ฐ„ ์ˆœ์ฐจ์ )์ด๋ผ ์ง๋ ฌํ™”ํ•œ๋‹ค๊ณ  ํ‘œํ˜„ํ•œ๋‹ค. ์กฐ๊ธˆ ๋” ๊ธธ๊ฒŒ ์„ค๋ช…ํ•˜์ž๋ฉด ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๋˜๋Š” ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ์ถ”ํ›„์— ์ €์žฅ๋  ์ˆ˜ ์žˆ๊ฑฐ๋‚˜ ์ „์†ก๋  ์ˆ˜ ์žˆ๋Š”, ๋˜๋Š” ์žฌ๊ตฌ์„ฑ๋  ์ˆ˜ ์žˆ๋Š” ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์ด๋‹ค. ์ด์— ๋ฐ˜๋Œ€๋˜๋Š” ๊ฐœ๋…์€ Deserialization์ด๋‹ค. ๋ฒˆ์—ญํ•˜๋ฉด '์—ญ์ง๋ ฌํ™”'๋กœ, ์–ด๋– ํ•œ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜๋œ ๊ฒƒ์„ ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. Serialization์˜ ์˜ˆ์‹œ๋ฅผ ๋ณด๋ฉด ์กฐ๊ธˆ ๋” ์™€๋‹ฟ๋Š”๋‹ค. ์•ฑ ..

Swift 2023.01.18

[ iOS ] ๊ณต์œ ํ•˜๊ธฐ ๊ธฐ๋Šฅ ๊ตฌํ˜„ - UIActivityViewController

๋ชฉ์ฐจ UIActivityViewController ์ƒ์„ฑํ•˜๊ธฐ excludedActivityTypes๋ฅผ ์‚ฌ์šฉํ•ด ํ•„์š”์—†๋Š” ์•ฑ ์ œ๊ฑฐ completionWithItemsHandler ์ฒ˜๋ฆฌํ•˜๊ธฐ UIActivityViewController์˜ ๋˜ ๋‹ค๋ฅธ Instance Property: allowsProminentActivity Apple์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” '๊ณต์œ ํ•˜๊ธฐ' ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค. ๋ฉ”์ผ, ๋ฉ”๋ชจ์žฅ, ํด๋ฆฝ๋ณด๋“œ ๋ณต์‚ฌ ๋“ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๊ณ , ์นดํ†ก, ํŠธ์œ„ํ„ฐ, ํŽ˜์ด์Šค๋ถ ๋“ฑ ํƒ€ ์•ฑ์—์„œ ๊ณต์œ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•œ๋‹ค๋ฉด ๊ฐœ๋ฐœ์ž๊ฐ€ ๋”ฐ๋กœ ๊ตฌํ˜„ํ•  ํ•„์š”์—†์ด ์ž์‹ ์˜ ์•ฑ์—์„œ ํƒ€ ์•ฑ์œผ๋กœ ๋ฐ์ดํ„ฐ ๊ณต์œ ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. '๊ณต์œ ํ•˜๊ธฐ'๋Š” UIActivityViewController ํด๋ž˜์Šค๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. UIAvtivityViewController๋Š” U..

iOS 2023.01.03

[ iOS ] UIListContentConfiguration: CollectionView์— ๊ธฐ๋ณธ Cell ์‚ฌ์šฉํ•˜๊ธฐ (14+)

๊ณต๋ถ€ ๊ธฐ๋ก TableView์˜ Cell์—์„œ contentConfiguration ํ”„๋กœํผํ‹ฐ๊ฐ€ ์žˆ๋“ฏ์ด CollectionView์˜ Cell์—์„œ๋„ contentConfiguration์ด ์žˆ๋‹ค. ํ•˜์ง€๋งŒ UITableViewCell์—๋Š” defaultContentConfiguration()์ด ์žˆ์ง€๋งŒ, UICollectionView์—์„œ๋Š” ํ•ด๋‹น ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๋‹ค. [ iOS ] contentConfiguration: TableView์— ๊ธฐ๋ณธ Cell ์‚ฌ์šฉํ•˜๊ธฐ (iOS 14+) ๊ณต๋ถ€ ๊ธฐ๋ก UITableViewCell์€ ์ปค์Šคํ…€ํ•˜์ง€ ์•Š๊ณ ๋„ cell์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ์—ฌ๋Ÿฌ ์˜ต์…˜์„ ์ œ๊ณตํ•œ๋‹ค. ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” UITableViewCell์˜ ํ”„๋กœํผํ‹ฐ ์ค‘ textLabel, detailTextLabel, imag..

iOS 2022.12.04

[ iOS ] contentConfiguration: TableView์— ๊ธฐ๋ณธ Cell ์‚ฌ์šฉํ•˜๊ธฐ (iOS 14+)

๊ณต๋ถ€ ๊ธฐ๋ก UITableViewCell์€ ์ปค์Šคํ…€ํ•˜์ง€ ์•Š๊ณ ๋„ cell์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ์—ฌ๋Ÿฌ ์˜ต์…˜์„ ์ œ๊ณตํ•œ๋‹ค. ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” UITableViewCell์˜ ํ”„๋กœํผํ‹ฐ ์ค‘ textLabel, detailTextLabel, imageView๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด์˜€์ง€๋งŒ, iOS 14 ์ดํ›„๋ถ€ํ„ฐ๋Š” ์ด ํ”„๋กœํผํ‹ฐ๋“ค์€ Deprecated ๋˜์–ด ๋” ์ด์ƒ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ์ด๊ฒƒ๋“ค์„ ๋Œ€์ฒดํ•˜๋Š” ํ”„๋กœํผํ‹ฐ๊ฐ€ ๊ฐœ๋ฐœ๋˜์—ˆ๋Š”๋ฐ, ๋ฐ”๋กœ contentConfiguration ์ด๋‹ค. UIButton์—์„œ๋„ ์ด์™€ ์œ ์‚ฌํ•œ ํ”„๋กœํผํ‹ฐ์ธ configuration(iOS 15+)์ด ์žˆ๋‹ค. ๋งŽ์€ Class๋“ค์—์„œ Configuration์ด ๋“ฑ์žฅํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์•„ ๊ฐœ๋ฐœ์ž๊ฐ€ View ๊ตฌ์„ฑ์„ ํ•œ ๊ฐ์ฒด๋กœ ์ •๋ฆฌ๋˜๋ฉฐ ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•œ ํ˜•ํƒœ๋กœ ๊ฐœ๋ฐœํ•˜๋„๋ก Apple์—์„œ ๋ฐฉ..

iOS 2022.11.29

[ iOS ] UIButton.Configuration ์‚ฌ์šฉํ•˜๊ธฐ(1) - Init, Title (iOS 15)

์ด ๊ธ€์€ iOS 15 ๋ฒ„์ „์„ ๊ธฐ์ค€์œผ๋กœ ์ž‘์„ฑ๋œ ๊ธ€์ž…๋‹ˆ๋‹ค. UIButton.Configuration์ด๋ž€? iOS 2.0+ ๋ถ€ํ„ฐ UIButton์˜ ๋ชจ์–‘์€ setTitle(:for:), setImage(:for:) ๊ณผ ๊ฐ™์€ UIButton์˜ ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์„ค์ •ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ iOS 15+ ๋ถ€ํ„ฐ๋Š” UIButton.Configuration์ด ์ถ”๊ฐ€๋˜๋ฉด์„œ ์ƒˆ๋กœ์šด ๋ฐฉ๋ฒ•์œผ๋กœ UIButton์˜ ๋ชจ์–‘๊ณผ ํ–‰๋™์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค. Configuration์€ ์ด์ „์— ์‚ฌ์šฉํ•˜๋˜ ๋ฉ”์„œ๋“œ๋“ค๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ทธ ๋ฉ”์„œ๋“œ๋“ค์„ ์•„์˜ˆ ๋Œ€์ฒดํ•  ์ˆ˜๋„ ์žˆ๋‹ค. Configuration์˜ ์žฅ์ ์€ ๊ธฐ์กด ๋ฒ„ํŠผ์˜ ๋ชจ์–‘๊ณผ ํ–‰๋™์„ ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์ฝ”๋“œ๋ฅผ ์ผ์ผ์ด ์ˆ˜์ •ํ•  ํ•„์š”์—†์ด ์ƒˆ๋กœ์šด Configuration์„ ๊ตฌ์„ฑํ•œ ๋’ค UIBu..

iOS 2022.10.13
728x90