๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90
๋ฐ˜์‘ํ˜•

๐ŸŽ iOS138

[iOS/UI] UIView ๋ฐฑ๊ทธ๋ผ์šด๋“œ ๊ทธ๋ผ๋ฐ์ด์…˜ ์ƒ‰ ๋„ฃ๊ธฐ (UIView Background gradient color) ์˜ค๋Š˜์€ UIView์— ๊ทธ๋ผ๋ฐ์ด์…˜ ์ƒ‰ ํšจ๊ณผ๋„ฃ๋Š” ๋ฒ•์„ ์•Œ์•„๋ด…์‹œ๋‹ค. ์ œ์ผ ๋จผ์ € ์Šคํ† ๋ฆฌ๋ณด๋“œ์—์„œ ์‹œํ—˜ํ•˜๊ธฐ ์œ„ํ•œ view๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์— ์—ฐ๊ฒฐ์‹œ์ผœ์ค๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ extension์œผ๋กœ UIView๋ฅผ ํ™•์žฅ์‹œ์ผœ์ฃผ๊ณ  ์•ˆ์— ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋‘ ์ข…๋ฅ˜ ์ƒ‰์„ ๋ฐ›๋Š” ๋ฉ”์†Œ๋“œ๋กœ setGradient๋ฅผ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. ์šฐ์„  CAGradientLayer์ธ gradient๋ฅผ ๋งŒ๋“ค์–ด์ค€ ๋’ค gradient.colors๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋‘ ์ข…๋ฅ˜๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค. gradient.locations๋Š” ๊ทธ๋ผ๋ฐ์ด์…˜์ด ์–ด๋Š ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐˆ์ง€ ์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. startPoint์™€ endPoint๋Š” ๊ฐ ๊ฐ ์‹œ์ž‘์ ๊ณผ ๋์ ์„ ์ •ํ•ด์ฃผ๋Š” ๊ฒ๋‹ˆ๋‹ค. frame์€ ํ•ด๋‹น view์— ๋งž๊ฒŒ ๋งž์ถฐ์ฃผ๋Š” bounds๋ฅผ ์จ์ฃผ์‹œ๊ณ  ํ•ด๋‹น view์˜ layer์— addSublayer๋กœ .. 2020. 5. 27.
[iOS] Carthage๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ด€๋ฆฌํ•˜๊ธฐ Carthage๋Š” CocoaPods์™€ ๊ฐ™์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๊ฐ€๋” ์ฝ”์ฝ”์•„ํŒŸ์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์–ด ์ด๋Ÿด ๋• ์นด๋ฅดํƒ€๊ณ ๋ฅผ ์‚ฌ์šฉํ•ด์ค˜์•ผํ•˜๋Š”๋ฐ ์šฐ์„  brew๋ผ๋Š” MacOS์šฉ ํŒจํ‚ค์ง€๊ด€๋ฆฌ์ž๋ฅผ ์„ค์น˜ํ•ด์ค๋‹ˆ๋‹ค. https://brew.sh/index_ko Homebrew The Missing Package Manager for macOS (or Linux). brew.sh ๊ทธ๋Œ€๋กœ ํ„ฐ๋ฏธ๋„์— ๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค! ๊ทธ ๋‹ค์Œ ์œ„์—์„œ ์„ค์น˜ํ•œ Homebrew๋ฅผ ์ด์šฉํ•ด carthage๋ฅผ ์„ค์น˜ํ•ด์ค๋‹ˆ๋‹ค. $ brew install carthage ๊ทธ๋ฆฌ๊ณค ์›ํ•˜๋Š” ํ”„๋กœ์ ํŠธ์— Cartfile์„ ๋งŒ๋“ค์–ด์ค˜์•ผ ํ•˜๋Š”๋ฐ ๋ฐฉ๋ฒ•์€ ํ„ฐ๋ฏธ๋„์—์„œ ์ž์‹ ์ด ์žˆ๋Š” ํ”„๋กœ์ ํŠธ๋กœ ์ด๋™ํ•œ ๋’ค 'touch Cartfile'์„ ์ณ์ฃผ์‹œ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด .. 2020. 4. 15.
[iOS/Library] WebP๋ฅผ ์ด์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€์šฉ๋Ÿ‰ ์ค„์ด๊ธฐ "WebP"๋Š” ๊ตฌ๊ธ€์—์„œ ๋งŒ๋“  ์ด๋ฏธ์ง€ ํฌ๋ฉง์ž…๋‹ˆ๋‹ค. ํ”ํžˆ ์‚ฌ์šฉํ•˜๋Š” GIF,PNG,JPEG ํŒŒ์ผ์„ ์ตœ๋Œ€ 30%๊นŒ์ง€ ์šฉ๋Ÿ‰์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ์„  ์•„๋ž˜ ๊นƒํ—ˆ๋ธŒ์ฃผ์†Œ๋กœ ๊ฐ€์‹  ๋‹ค์Œ์— https://github.com/ainame/Swift-WebP ainame/Swift-WebP A thin Swift wrapper of libwebp to make your own encoder/decoder app - ainame/Swift-WebP github.com ์›นํ”ผ๋ฅผ ์„ค์น˜ํ•ด์ฃผ์‹œ๋ฉด ๋˜๋Š”๋ฐ ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” Cocoapods์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ณ ๋กœ Carthage๋กœ ๋นŒ๋“œํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Carthage๋กœ ๋นŒ๋“œํ•˜๋Š” ๋ฒ•์€ ์•„๋ž˜ ๊ธ€์„ ์ฐธ์กฐํ•ด์ฃผ์„ธ์š” https://fomaios.tistory.com/220 Carthage๋กœ ๋ผ์ด.. 2020. 4. 14.
[iOS/Library] Swift Snapkit์œผ๋กœ ์ฝ”๋“œ๋กœ ์˜คํ† ๋ ˆ์ด์•„์›ƒ ์‰ฝ๊ฒŒํ•˜๊ธฐ(Easy Programmatically AutoLayout) Snapkit์€ ์ฝ”๋“œ๋กœ ๋ ˆ์ด์•„์›ƒ์„ ๋„์™€์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์šฐ์„  ํŒŸํŒŒ์ผ์— ์•„๋ž˜์™€ ๊ฐ™์ด 'SnapKit', '~> 5.0.0'์„ ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค. ๋ฒ„์ „์€ ๋ฐ”๋€” ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์•„๋ž˜ ์Šค๋ƒ…ํ‚ท ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๊ฐ€์…”์„œ ํ™•์ธํ•˜์‹œ๊ณ  ์ถ”๊ฐ€ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. https://github.com/SnapKit/SnapKit SnapKit/SnapKit A Swift Autolayout DSL for iOS & OS X. Contribute to SnapKit/SnapKit development by creating an account on GitHub. github.com ๊ทธ๋ฆฌ๊ณ  ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋กœ ์ด๋™ํ•ด 'SnapKit'์„ importํ•ด์ฃผ๊ณ  ๋ฌด์ง€๊ฐœ์ƒ‰ UIView๋“ค์„ ๋งŒ๋“ค์–ด๋†“์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณค view์— addSubview๋กœ ๋ฌด์ง€๊ฐœ์ƒ‰ ๋ทฐ๋“ค์„ ๋„ฃ.. 2020. 4. 10.
[iOS/Library] Swift Realm์œผ๋กœ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌํ•˜๊ธฐ (Realm DataBase Save,Read,Update,Delete) ๋ ˜์ด๋ž€? ์•„์ฃผ ๊ฐ„ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋ฐ”์ผ ์šฉ ์˜คํ”ˆ์†Œ์Šค ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ž…๋‹ˆ๋‹ค ์‚ฌ์šฉ๋ฒ•์€ ์šฐ์„  pod์— 'ReamSwift'๋ฅผ ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค. ํ„ฐ๋ฏธ๋„๋กœ ๊ฐ€์„œ pod install์„ ํ•ด์ค€ ๋’ค ๋‹ค์‹œ Xcode๋กœ ์™€์„œ 'import RealmSwift'๋ฅผ ํ•ด์ค€ ๋’ค ์›ํ•˜๋Š” ๋ชจ๋ธ์„ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. ์ €๋Š” UserInfo๋ผ๊ณ  ์ด๋ฆ„ ์ง“๊ณ  (๋ฐ˜๋“œ์‹œ ์˜†์— Object๋กœ ๋ช…์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.) ์ด๋ฆ„๊ณผ ๋‚˜์ด ์„ฑ๋ณ„์„ ์ดˆ๊ธฐ๊ฐ’์œผ๋กœ ์„ ์–ธํ•ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค. 1 2 3 4 5 6 7 8 import Foundation import RealmSwift class UserInfo:Object { @objc dynamic var name = "" @objc dynamic var age = 0 @objc dynamic var gender = "" } h.. 2020. 4. 5.
[iOS/UI] Swift ํƒญ๋ฐ”์•„์ดํ…œ์— ์ด๋ฏธ์ง€ ์‚ฝ์ž…ํ•˜๊ธฐ(UITabBarItem Using oringinal image) ์šฐ์„  ํƒญ๋ฐ”์•„์ดํ…œ์— ๋„ฃ์„ ์ด๋ฏธ์ง€๋ฅผ Asset์— ๋„ฃ์–ด์ค€๋‹ค. ๊ทธ ๋’ค์— ํ•ด๋‹น ์ด๋ฏธ์ง€์˜ Image Set์—์„œ Render As๋ฅผ Original Image๋กœ ๋ฐ”๊ฟ”์ค€ ๋’ค ํ•ด๋‹น ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์— Image๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ด๋ฏธ์ง€๊ฐ€ ๊ทธ๋Œ€๋กœ ์ ์šฉ๋œ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด ์ž˜ ์ ์šฉ๋œ ๋ชจ์Šต์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ํ•ด๋‹น ์ด๋ฏธ์ง€๋ฅผ ์กฐ๊ธˆ ๋” ์•„๋ž˜๋กœ ๋‚ฎ์ถ”๊ณ  ์‹ถ๋‹ค๋ฉด ํ•ด๋‹น ํƒญ๋ฐ”์•„์ดํ…œ์˜ Image Inset์„ ์กฐ์ •ํ•˜๋ฉด ๋œ๋‹ค! 2020. 4. 3.
[iOS/UI] Swift ์•จ๋ฒ” ์‚ฌ์ง„ ๊ณ ๋ฅธ ๊ฐฏ์ˆ˜ ์ฐจ๋ก€๋กœ ๋ฒˆํ˜ธ ๋ถ€์—ฌํ•˜๊ธฐ ์šฐ์„  ๋‚˜๋Š” ์•„๋ž˜ ์นดํ†ก ์‚ฌ์ง„๊ณ ๋ฅด๊ธฐ์™€ ๊ฐ™์ด ํƒญํ•œ ์ˆœ์„œ๋Œ€๋กœ ๋ฒˆํ˜ธ๊ฐ€ ๋ถ€์—ฌ๋˜๋ฉด์„œ ์‚ฌ์ง„๋ฐฐ์—ด์— ์‚ฌ์ง„์ด ๋“ค์–ด๊ฐ€๊ฒŒ ํ•˜๊ณ  ๋‹ค์‹œ ํƒญํ•  ๊ฒฝ์šฐ ๋ฐฐ์—ด์˜ ์‚ฌ์ง„์„ ์‚ญ์ œํ•ด์ฃผ๊ณ  ๊ทธ๋ณด๋‹ค ํฐ ๋ฒˆํ˜ธ๋“ค์€ ์‚ญ์ œํ•œ ๊ฐฏ์ˆ˜๋งŒํผ ๋ฒˆํ˜ธ๊ฐ€ ์ž‘์•„์ ธ์•ผํ–ˆ๋‹ค. ์šฐ์„  2๊ฐœ์˜ ๋ฐฐ์—ด์ด ํ•„์š”ํ•œ๋ฐ ํ•˜๋‚˜๋Š” ์‚ฌ์ง„์„ ๋‹ด์„ ๋ฐฐ์—ด๊ณผ ํ•˜๋‚˜๋Š” ๋ช‡ ๋ฒˆ์งธ ์ธ๋ฑ์Šค๊ฐ€ ์„ ํƒ๋˜์—ˆ๋Š”์ง€ ๋‹ด์„ ๋ฐฐ์—ด์ด ํ•„์š”ํ•˜๋‹ค. 1 2 var photos = [UIImage]() var photoarray = [Int]() ๊ทธ ๋‹ค์Œ cellForItemAt์— ํฌํ† ์–ด๋ ˆ์ด๊ฐ€ ๋น„์–ด์žˆ์ง€์•Š๋‹ค๋ฉด !photoarray.isEmpty{ for๋ฌธ์„ ์ด์šฉํ•ด photoarray์•ˆ์— ์žˆ๋Š” ์ˆซ์ž๋“ค์„ ์ฐจ๋ก€๋กœ indexPath์™€ ๋น„๊ตํ•ด์„œ ๋งž๋‹ค๋ฉด ํ•ด๋‹น ์ˆซ์ž๋ผ๋ฒจ(cell.number)๋ฅผ i๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค. ๊ทธ๋Ÿฌ๋ฉด photoarray์•ˆ์— ์ˆœ์„œ๋Œ€๋กœ ํ…์Šค.. 2020. 4. 1.
[iOS] ๋Ÿฐ์น˜์Šคํฌ๋ฆฐ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ(LaunchScreen Update) ์šฐ์„  ํฐ์ด๋‚˜ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ ์•ฑ์„ ์‚ญ์ œํ•˜๊ณ  ์ „์›์„ ๋„๊ณ  ๋‹ค์‹œ ์ผ  ๋‹ค์Œ ์•ฑ์„ ๋‹ค์‹œ ์„ค์น˜ํ•˜๋ฉด ๋Ÿฐ์น˜์Šคํฌ๋ฆฐ์ด ์—…๋ฐ์ดํŠธ ๋œ๋‹ค! 2020. 3. 25.
[iOS/Library] Swift ๋กœํ‹ฐ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๊ตฌํ˜„ํ•˜๊ธฐ(Swift Lottie Animation) ์šฐ์„  ๋กœํ‹ฐ ํ™ˆํŽ˜์ด์ง€์— ๊ฐ€์„œ ์›ํ•˜๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜ ํŒŒ์ผ์„ ์ฐพ๋Š”๋‹ค. Download JSON์„ ๋ˆŒ๋Ÿฌ์„œ ์ €์žฅํ•ด์ค€๋‹ค. Xcode๋กœ ๋Œ์•„์™€์„œ ์ฒซ๋ฒˆ์งธ๋กœ ํ•  ์ผ์€ podfile์— pod 'lottie-ios' ๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๊ณ  ํ„ฐ๋ฏธ๋„๋กœ ๊ฐ€์„œ pot install์„ ํ•ด์ค€๋‹ค. ๋‹ค์šด๋ฐ›์•˜๋˜ jsonํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•ด์ฃผ๊ณ  ์ด๋ฆ„์„ ์„ค์ •ํ•ด์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  import Lottie๋ฅผ ํ•ด์ค€ ๋’ค ์ž„์˜์˜ animationView๋ฅผ ์„ค์ •ํ•ด์ฃผ๊ณ  ์ดˆ๊ธฐํ™”๋ฅผ Lottie๊ฐ€ ์ œ๊ณตํ•˜๋Š” AnimationView()๋กœ ํ•ด์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  setup()๋ฉ”์†Œ๋“œ๋ฅผ ๋งŒ๋“ค์–ด์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ๋„ฃ์–ด์ค€๋‹ค. animationView.animation = Animation.named("์„ค์ •ํ•ด์คฌ๋˜ jsonํŒŒ์ผ์˜ ์ด๋ฆ„") 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 .. 2020. 3. 24.
[iOS] Swift ์‚ฌ์ง„ ํ—ˆ๊ฐ€๋ฐ›์€ ์ƒํƒœ์•Œ๊ธฐ ๋ฐ ์„ธํŒ…์œผ๋กœ ์ธ๋„ํ•˜๊ธฐ ์šฐ์„  ์ฒดํฌํฌํ† ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌํผ๋ฏธ์…˜ ๋ฉ”์†Œ๋“œ๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ๊ฐ ์ƒํƒœ์— ๋”ฐ๋ผ ํ•ด์•ผํ•  ์ผ์„ ์ •ํ•ด์ค€๋‹ค 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 func checkPhotoLibraryPermission() { let status = PHPhotoLibrary.authorizationStatus() switch status { case .authorized: self.testlabel.text = "ํ—ˆ๋ฝ" case .denied, .restricted : self.testlabel.text = "์•„์ง" case .notDetermined: self.testlabel.text = "๊ฒฐ์ •๋ชปํ•จ" PHPhotoLibrary.requestAuthorization { statu.. 2020. 3. 23.
[iOS] ์„ธ๊ทธ๋กœ ํ™”๋ฉด ์ด๋™ ์‹œ ๋„ค๋น„๊ฒŒ์ด์…˜ ํƒ€์ดํ‹€ ๋ฐ”๊พธ๊ธฐ ์›๋ž˜ ๋„ค๋น„๊ฒŒ์ด์…˜ ํƒ€์ดํ‹€์€ ์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์ด์šฉํ•ด์„œ ๋ฐ”๊พธ๋ฉด ๋๋‹ค. ํ•˜์ง€๋งŒ ์„ธ๊ทธ๋กœ ์ด๋™ ์‹œ์—” ์›ํ•˜๋Š” ํ…์ŠคํŠธ๋กœ ๋ฐ”๋€Œ์ง€๊ฐ€ ์•Š์•˜๋‹ค. ๊ตฌ๊ธ€๋งํ•ด ๋ณธ ๊ฒฐ๊ณผ ViewController์—” ๋”ฐ๋กœ title์ด๋ผ๋Š” property๊ฐ€ ์กด์žฌํ–ˆ๊ณ  ์ด๊ฒƒ์„ ๋ฐ”๊ฟ”์ค˜์•ผ ๋„ค๋น„๊ฒŒ์ด์…˜ ํƒ€์ดํ‹€์ด ๋ฐ”๋€Œ๊ฒŒ ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ name์„ ์„ค์ •ํ•ด์ค€ ๋’ค ํ™”๋ฉด์„ ์ด๋™ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํƒ€์ดํ‹€์ด ๋ฐ”๋€Œ๊ฒŒ ๋œ๋‹ค. 2020. 2. 29.
[iOS] UITableViewController์—์„œ ์„ธ๊ทธ๋กœ ๊ฐ’ ๋„˜๊ธฐ๊ธฐ ์šฐ์„  ์…€ ์•ˆ์— ์žˆ๋Š” ๋ฒ„ํŠผ์— addTarget์„ ์„ค์ •ํ•ด์ฃผ๊ณ  action์— #selector(@objcํ•จ์ˆ˜)๋ฅผ ๋„ฃ์–ด์ค€๋‹ค. @objc ํ•จ์ˆ˜์—” performSegue๋ฅผ ์ด์šฉํ•ด ํ•ด๋‹น ์„ธ๊ทธ์˜ ์•„์ด๋ดํ‹ฐํ”ผ์–ด๋ฅผ ์ •ํ•ด์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  override๋˜์–ด์žˆ๋Š” ๋ฉ”์†Œ๋“œ prepare๋ฅผ ์ด์šฉํ•ด ๊ทธ ์•ˆ์— param์ด๋ผ๋Š” ์ƒ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์ค€ ๋’ค segue.destination as! ์›ํ•˜๋Š”๋ทฐ์ปจํŠธ๋กค๋Ÿฌ ์›ํ•˜๋Š”๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์•ˆ์— ๋ณ€์ˆ˜ ์ค‘ ๋ฐ”๊ฟ€ ๊ฐ’์„ ์ž…๋ ฅํ•ด์ค€๋‹ค. ์ถœ๋ฐœํ•  ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์—์„œ control์„ ํ•ด์„œ ๋„์ฐฉํ•˜๊ณ  ์‹ถ์€ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์— show๋ฅผ ํ•ด์ฃผ๊ณ  ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ์— identifier์— ์›ํ•˜๋Š” ์ด๋ฆ„์„ ์„ค์ •ํ•ด์ค€๋‹ค. 2020. 2. 29.
728x90
๋ฐ˜์‘ํ˜•