๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

iOS7

[iOS] ํ‘ธ์‹œ์•Œ๋ฆผ ๋ฐ›์•„์„œ ์ฒ˜๋ฆฌํ•˜๊ธฐ ํ‘ธ์‹œ์•Œ๋ฆผ์„ ํ†ตํ•ด ์•ฑ์— ๋“ค์–ด์˜ค๋Š” ๊ฒฝ์šฐ๋Š” ํฌ๊ฒŒ ๋‘๊ฐ€์ง€๋กœ ๋‚˜๋‰  ์ˆ˜ ์žˆ์Šด๋‹ˆ๋‹ค ์•ฑ์ด ์™„์ „ํžˆ ์ข…๋ฃŒ๋œ ์ƒํƒœ inactive/active/background ์ƒํƒœ 1๏ธโƒฃ ์•ฑ์ด ์™„์ „ํžˆ ์ข…๋ฃŒ๋œ ์ƒํƒœ์—์„œ ํ‘ธ์‹œ์•Œ๋ฆผ์„ ํ†ตํ•ด ์•ฑ์— ๋“ค์–ด์˜ค๋Š” ๊ฒฝ์šฐ SceneDelegate์˜ willConnectTo์—์„œ ์ฒ˜๋ฆฌ class SceneDelegate: UIResponder, UIWindowSceneDelegate { ... func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { ... // ์•ฑ ์ข…๋ฃŒ ์ƒํƒœ์—์„œ ํ‘ธ์‹œ์•Œ๋ฆผ์„ ํ†ตํ•ด ์•ฑ์— ์ ‘์†ํ•˜๋Š” ๊ฒฝ์šฐ if let notificatio.. 2022. 10. 12.
[iOS] Compositional Layout ๐Ÿ’‚‍โ™€๏ธ UICollectionViewCompositionalLayout์ด๋ž€? compositionalLayout์€ collectionView layout์˜ ํ•œ ์ข…๋ฅ˜์ž…๋‹ˆ๋‹น ๊ฐ๊ฐ์˜ ์ž‘์€ ๊ตฌ์„ฑ๋“ค์ด ๋ชจ์—ฌ์„œ ์ „์ฒด ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ, ๊ธฐ์กด์˜ ์ปฌ๋ ‰์…˜๋ทฐ ๋ ˆ์ด์•„์›ƒ ๊ตฌํ˜„์— ๋น„ํ•ด ์ข€ ๋” ๋‹ค์–‘ํ•œ ๊ตฌ์„ฑ์˜ ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. section + group + item ๋ณ„๋กœ ๋ฌถ์–ด์„œ ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— section ๋ณ„๋กœ ๋‹ค๋ฅธ ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌ์„ฑํ•˜๊ธฐ๊ฐ€ ์‰ฝ๋‹ค๋Š” ์ ์ด ์žฅ์ ์ž…๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ž‘์€ ๋‹จ์œ„์˜ item๋ถ€ํ„ฐ item์„ ๋ฌถ์–ด๋‘” group, ๊ทธ group์„ ๋ฌถ๋Š” section ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. item, group์˜ ๊ฐ ์‚ฌ์ด์ฆˆ๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๊ณ  item์€ group์˜ ์š”์†Œ๋กœ, group์€ section์˜ ์š”์†Œ๋กœ ๋„ฃ์–ด์ค.. 2022. 9. 5.
[iOS] ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ฝ”๋“œ๋ฒ ์ด์Šค, ์Šคํ† ๋ฆฌ๋ณด๋“œ์—์„œ ๋‘˜๋‹ค ์“ธ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•๐Ÿฏ Component ๐Ÿ’ญ ์š” ํ•˜๋‹จ์˜ ๋ฒ„ํŠผ์ด ๋งŽ์€ ๋ทฐ์—์„œ ์žฌ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์–ด์„œ ์ปดํฌ๋„ŒํŠธํ™” ํ–ˆ์Šต๋‹ˆ๋‹ค ์ดˆ๊ธฐํ™”ํ• ๋•Œ setLayout์—์„œ width์™€ height๋ฅผ ์žก์•„์คฌ๊ตฌ, centerX๋งŒ ์žก์•„์ฃผ๋ฉด ๋ฐ”๋กœ ์ ์šฉ๋  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์™ธ์˜ ๋ฒ„ํŠผ UI์™€ title, ํ™œ์„ฑ·๋น„ํ™œ์„ฑํ™” ์ƒํƒœ ๋“ฑ์€ setUI(.type), setTitle, setAble ๋“ฑ์˜ ํ•จ์ˆ˜๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๐Ÿšจ ์ €๋Š” ์ฝ”๋“œ๋ฒ ์ด์Šค๋กœ ๋ทฐ๋ฅผ ์งฐ๊ธฐ ๋•Œ๋ฌธ์— BottomButton ์ด๋ผ๋Š” ํด๋ž˜์Šค๋ช…์œผ๋กœ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ ์Šคํ† ๋ฆฌ๋ณด๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํŒ€์›์€ ์ด๊ฑธ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋‚˜ ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•๐Ÿ’ก ๋ฐฉ๋ฒ•์€ ์ƒ๊ฐ๋ณด๋‹ค ๊ต‰์žฅํžˆ ๊ฐ„๋‹จํ–ˆ์Šด๋‹ˆ๋‹ค ! ๋ณดํ†ต ์—๋Ÿฌ ๋ฉ”์„ธ์ง€๋ฅผ ๋„ฃ์–ด์ฃผ๋Š” required init์—๋„ ์ดˆ๊ธฐํ™” ํ•จ์ˆ˜๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹น class BottomB.. 2022. 5. 30.
[iOS] RxDataSource ๐Ÿ˜ก ๐Ÿ˜ก ์•ผ์‹ฌ์ฐจ๊ฒŒ Rx๋กœ ์ปฌ๋ ‰์…˜๋ทฐ/ํ…Œ์ด๋ธ”๋ทฐ๋ฅผ ๊ตฌ์„ฑํ–ˆ๋Š”๋ฐ .. ๊ฐ‘์ž๊ธฐ .. ์„น์…˜์ด ํ•„์š”ํ•˜๋‹ค..? ๊ทธ๋Ÿผ RxDataSource๋ฅผ ์“ฐ์„ธ์š”.. RxDataSource๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ โ“ Rx๋ฅผ ํ†ตํ•ด collectionView๋ฅผ ๋ฐ”์ธ๋”ฉํ•ด์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค .. ์„น์…˜์ด ํ•˜๋‚˜์ธ ๊ฒฝ์šฐ์—๋Š” RxSwift , RxCocoa dataSource ๋งŒ์œผ๋กœ๋„ ์ถฉ๋ถ„ํžˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์„น์…˜์ด ์—ฌ๋Ÿฌ๊ฐœ๊ฐ€ ๋˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๊ตฌํ˜„์ด ์กฐ๊ธˆ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ RxDataSource๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ ์„น์…˜์˜ ์—ฌ๋Ÿฌ ์•„์ดํ…œ์„ ๋„ฃ์–ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. GitHub - RxSwiftCommunity/RxDataSources: UITableView and UICollectionView Data Sources for RxSwift (sections, .. 2022. 5. 17.
[iOS] Haptic ์‚ฌ์šฉ๋ฒ•๐Ÿ‘‹ Haptic์„ ๋„ฃ๊ณ  ์‹ถ๋‹ค ์‚ฌ์šฉ์ž๊ฐ€ ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„๋•Œ ๋ˆŒ๋ €๋‹ค๋Š”๊ฒŒ ์ธ์ง€๋˜๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ ํ–…ํ‹ฑ Haptic์ด ์žˆ์Šด๋‹ˆ๋‹ค ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ € Haptic์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด AVFoundation์ด๋ผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ• ๊ฒ๋‹ˆ๋‹ค. ๐Ÿ“„ AVFoundation iOS, tvOS, macOS๋ฅผ ์œ„ํ•œ ๋ฏธ๋””์–ด ํ”„๋ ˆ์ž„์›Œํฌ ์ด ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ํ†ตํ•ด ๋ฏธ๋””์–ด ์บก์ณ, ํŽธ์ง‘ ๋ฐ low-level ์ฒ˜๋ฆฌ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฏธ๋””์–ด ์ฒ˜๋ฆฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ๋กœ ๋ฏธ๋””์–ด ์žฌ์ƒ ๊ธฐ๋Šฅ์— ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. Apple Developer Documentation ๐Ÿ“„ ์›ํ•˜๋Š” ํ–…ํ‹ฑ ๋„ฃ๊ธฐ ์Šคํ† ๋ฆฌ๋ณด๋“œ๋ฅผ ํ†ตํ•ด ์˜†์— ๋ณด์ด๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด UI๋ฅผ ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„๋•Œ ๊ฐ๊ฐ ๋‹ค๋ฅธ ํ–…ํ‹ฑ์„ ๋Š๋‚„ ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค. AVFound.. 2022. 4. 23.
[iOS] Diffable Datasourceโ“ Diffable Datasource๊ฐ€ ๋ญ๋ƒ? ๊ณต์‹๋ฌธ์„œ ํ•ด์„ ๐Ÿ“„ UICollectionViewDiffableDataSource ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  collectionView์— cell์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด @MainActor class UICollectionViewDiffableDataSource : NSObject where SectionIdentifierType : Hashable, ItemIdentifierType : Hashable collection view์˜ ๋ฐ์ดํ„ฐ์™€ UI ์—…๋ฐ์ดํŠธ ๊ด€๋ฆฌ๋ฅผ ๋” ๊ฐ„๋‹จํ•˜๊ณ  ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ธฐ์กด์˜ UICollectionViewDataSource์˜ ํ”„๋กœํ† ์ฝœ์„ ๋”ฐ๋ฅด๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ํ”„๋กœํ† ์ฝœ์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์ „๋ถ€ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. collecti.. 2022. 3. 18.
[iOS] Notification Center ๐Ÿ“ก Notification Center์ด๋ž€? ํŠน์ • ์ด๋ฒคํŠธ ๋ฐœ์ƒ์‹œ, ํ•ด๋‹น ์ด๋ฒคํŠธ์˜ ๋ฐœ์ƒ ์—ฌ๋ถ€๋ฅผ observe ํ•˜๊ฒ ๋‹ค๊ณ  ๋“ฑ๋กํ•œ ๋ชจ๋“  observer์—๊ฒŒ ์ „๋‹ฌํ•ด์ฃผ๋Š” ๊ฐ์ฒด ์–ธ์ œ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์„๊นŒโ“ ์ผ๋Œ€๋‹ค ๋˜๋Š” ๋‹ค๋Œ€๋‹ค ํ†ต์‹ ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์•ฑ ๋‚ด์—์„œ ๋ช…์‹œ์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์€ ์ปดํฌ๋„ŒํŠธ ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํผ์ด๋ผ๋Š” ์ด๋ฆ„์˜ notification์„ ๊ด€์ฐฐํ•˜๊ณ  ์žˆ๋Š” FirstVC์—๊ฒŒ ํ•ด๋‹น noti๊ฐ€ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค! SecondVC์—์„œ dismiss completion์— ํ•ด๋‹น ํผ์ด๋ผ๋Š” ์ด๋ฆ„์˜ notification ์„ post ํ•ด์ฃผ๋ฉด FirstVC์—์„œ ํผ์ด๋ผ๋Š” ์ด๋ฆ„์˜ notification ์„ ๊ด€์ฐฐํ•˜๊ฒ ๋‹ค๊ณ  addObserve ํ•˜๊ณ  ex) ํ™”๋ฉด ์ „ํ™˜ ํ›„ pop ๋˜๋Š” dismissํ•  ๋•Œ ๋Œ์•„์˜จ VC์— ์†ํ•œ ๋ฌด์–ธ๊ฐ€๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š”.. 2022. 3. 14.