๐๐ปโ๏ธ'์งง์' ์นดํ ๊ณ ๋ฆฌ๋ฅผ ์์ํ๋ฉฐ
๊ฐ๋ฐ์ ํ๋ฉฐ ๋งค์ผ ๋ฐฐ์ฐ๋ ๋ด์ฉ๋ค์ด ๋ง์๋ฐ ํญ์ ๋ธ๋ก๊ทธ์ ์ ๋ฆฌํด์ผ์ง ํด๋ ๋ธ๋ก๊ทธ ์ ๋ฆฌ๋ ๊ณต๋ถ์์ ๊ตฌ์ฑ๊น์ง ๋ฉฐ์น ์ด ์์๋๊ธฐ์ ๋น์ฅ ๊ธํ ํ๋ก์ ํธ์ ๋ฐ๋ ค ๊ฒฐ๊ตญ ์ฃผ์ ๊ฐ ๊ธฐ์ต์ด ๋์ง ์์ ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ค. ์ค๋๋ PhotoKit๋ฅผ ์ฌ์ฉํ๋ฉฐ ์๊ฒ ๋ ๋ด์ฉ์ ์ ๋ฆฌํ๊ณ ์ถ์๋๋ฐ ํ๋ก์ ํธ๊ฐ ๊ธํด ๊ฒฐ๊ตญ์ ํ๋ฃจ๊ฐ ๋๋๋ฒ๋ ธ๋ค. ํ์ง๋ง ๋์ด์์ ๋์ด๊ฐ๊ณ ์ถ์ง ์์ 30๋ถ๋ง์ ์ ๋ฆฌํ๋ ์งง์ ๊ธฐ๋ก์ ํ๊ธฐ๋ก ๊ฒฐ์ฌํ๋ค!
๐ธPHPickerViewController
์ฌ์ฉ์ ๊ธฐ๊ธฐ์ ์จ๋ฒ์ ์ด์ด ์ฌ์ง์ ์ ๋ก๋ํ๋ ๊ธฐ๋ฅ์ ์ ๋ง ๋ง์ด ์ฌ์ฉ๋๋ค. ๊ฐ์ฅ ๋ํ์ ์ธ ์์๋ ์นดํก์ 'ํ๋กํ ์ฌ์ง ์ค์ '์ด ์๋ค. ์ค๋ ํ๋ก์ ํธ์ ํ๋กํ ์ด๋ฏธ์ง ์ค์ ์ ๊ตฌํํ๊ธฐ ์ํด PHPickerViewController๋ฅผ ์ฌ์ฉํ๊ฒ ๋์๋ค. ์ด ํด๋์ค๋ PhotoKit๋ฅผ ํตํด ์ฌ์ฉํ ์ ์๋ ViewController๋ก, ๊ธฐ์กด์ ์ฌ์ฉํ๋ UIImagePickerController์ ๋์ผํ๊ฒ ์จ๋ฒ์์ ์ฌ์ง์ ์ ํํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. ๋ค๋ฅธ ์ ์ PHPickerViewController๋ ๊ฐ์ ๋ ์์ ์ฑ๊ณผ ์ ๋ขฐ์ฑ์ ์ ๊ณตํ๊ณ , ์ฌ๋ฌ ๊ฐ์ ์ฌ์ง์ ์ ํํ ์ ์๋ ๊ธฐ๋ฅ๊ณผ Live Photo๋ง ์ ๊ณตํ ์๋ ์๋ ๋ฑ ๊ฐ๋ฐ์์ ์ฌ์ฉ์์๊ฒ ๋ช๋ช ์ด์ ์ ์ ๊ณตํ๋ค. ๋ ์ ์ ํ์ฅ๋๊ณ ์์ด์ PHPickerViewController๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์ ์ฉํ ๊ฒ ๊ฐ๋ค.
๐itemProvide.loadObject(ofClass: completionHandler:)
์ฌ์ง์ ์ ํํ๊ณ ๋๋ฉด View์ ๋ฐ์์ ํด์ฃผ์ด์ผ ํ๋ค! ๊ทผ๋ฐ ์ด๋ฏธ์ง๋ฅผ ์ด๋ป๊ฒ ์ฝ๋๋ก ๋ถ๋ฌ์ฌ ์ ์์๊น? PHPickerViewControllerDelegate๋ฅผ ํตํด ์ฌ์ง ์ ํ์ด ์๋ฃ๋ ํ ์์ ์ ๊ตฌํํ ์ ์๋ค. didFinish ํ๋กํผํฐ๊ฐ ์๋ ๋ฉ์๋๋ฅผ ์ฌ์ฉํด ์ ํํ ์ฌ์ง ์ ๋ณด๋ฅผ ๊บผ๋ด๋ณด์. ์ ํ๋ ์ฌ์ง๋ค์ PHPickerResult ํ์ ์ธ results๋ฅผ ํตํด ์ฌ์ฉํ ์ ์๋ค. PHPickerResult.identifier์ ์ฌ์ง์ id์ด๊ณ , PHPickerResult.itemProvider๋ ์ฌ์ง์ด ๋ด๊ฒจ์๋ ์ปจํ ์ด๋๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค. itemProvider์ ์ฌ๋ฌ load ๋ฉ์๋๊ฐ ์กด์ฌํ๋๋ฐ, loadObject(ofClass: completionHandler:)๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ๋ก UIImage ํ์ ์ผ๋ก ๋ณํํ์ฌ View์ ๋ฐ์ํด ์ค ์ ์๋ค! ๋ง์ฝ url ํ์ ์ ์ํ๋ค๋ฉด loadFileRepresentation์ ์ฌ์ฉํ ์ ์๋ค. ์ด์ธ์๋ UTType์ ์ฌ์ฉํด ์ฌ๋ฌ ํ์ ์ผ๋ก ๋ณํํ ์๋ ์๋ค. ๊ทผ๋ฐ ์ด๊ฑด ์ข ๋ค๋ฃจ๊ธฐ ๊น๋ค๋ก์ ๋ค.. ์ผ๋จ UTType์ ๊ฒ์ํ๋๋ฐ ์๋ ๊ณต์๋ฌธ์๋ถํฐ ๋์์ ํค๋งธ์๋ค. ๊ทธ๋๋ ์ฌ๋ฌ ํ์ ์ ๊ฒฝํํด ๋ณผ ์ ์์๋ ๊ธฐํ์๋ค๊ณ ์๊ฐํด์ผ์ง ํด^^
์ฌ์ง์ ๊ฐ์ ธ์ค๋ฉด์ ์ ๋ง ๋๋ฅผ ํท๊ฐ๋ฆฌ๊ฒ ํ๋ ๊ฑด ๋ฐ๋ก ์ฌ๋ฌ ๊ฐ์ง ์ฌ์ง์ ๋ปํ๋ ๋ง์ด์๋ค. Asset, Image, item, selection, result ๋ฑ ๋ชจ๋๊ฐ ์จ๋ฒ์์ ๊บผ๋ด์จ ์ฌ์ง์ ์๋ฏธํ๋ค. ๋ฌผ๋ก ํ๋์ฉ ๋ฐ์ ธ๋ณด๋ฉด ๋ค๋ฅด๊ฒ ์ง๋ง ์ต์ํ์ง ์์ ๋ํํ ๋ ์ผ๋จ ์ ์ฒด์ ์ธ ํฐ ํ์ ์ดํดํ๊ธฐ ์ํด์๋ ํ๋๋ก ํต์ผํ ํ์๊ฐ ์์๋ค. ์ด์จ๋ ์ฌ๋ฌ ๋ฒ ๋ซ์ด์ง๊ฒ ๊ณต์๋ฌธ์์ Sample Code๋ฅผ ๋ณธ ๊ฒฐ๊ณผ ๋ชจ๋ ์ดํดํ ์ ์์๋ค.
๐ง๐ปโ๏ธ๋ง๋ฌด๋ฆฌ
30๋ถ ๋! ์ฌ์ค ์ฒซ๋ ์ด๊ธฐ๋ ํ๊ณ ์ด๋ฏธ ํ๋ก์ ํธ ํ์ผ๊ณผ ๊ณต์๋ฌธ์๋ค์ ๋ซ์ ๋์ ์ํ๋ผ ๋ค์ ์ฐพ์๋ด์ผ ํด์ 30๋ถ์ด ํ์ฉ ๋์๋ค..
๋ค์ ์งง์ ๊ธฐ๋ก ๋์๋ ์ง์ง 30๋ถ๋ง ์ ๋ฆฌํด์ ์ฅ๊ธฐ์ ์ผ๋ก ๊พธ์คํ ์ด์ด๋๊ฐ ์ ์๋๋ก ๋ ธ๋ ฅํด์ผ์ง!
'์งง์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ ์งง์ ] 6 - iOS ๊ฐ๋ฐ์๋ ์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ์๊ฒฉ์ฆ์ด ํ์ํ ๊น (1) | 2024.06.19 |
---|---|
[ ์งง์ ] 5 - ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ๋ ์ดํด ํ๋ ค๋ค (1) | 2024.03.29 |
[ ์งง์ ] 4 - '์ผ๊ธฐ' ๋ฆฌํฉํ ๋ง ์์! (1) | 2024.01.29 |
[ ์งง์ ] 3 - MVC ๊ณต๋ถ๋ฅผ ์์ํ๋ฉฐ (1) | 2023.10.11 |
[ ์งง์ ] 2 - UIAlertContoroller ์๋ธํด๋์ฑํ๊ธฐ (0) | 2023.08.16 |