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

๐ŸŽ iOS/UI59

[iOS/UI] ํŠน์ • ๋ถ€๋ถ„๋งŒ ํˆฌ๋ช…ํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ (feat. fillRule, evenOdd) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ ์ค‘์— ํŠน์ • ๋ถ€๋ถ„๋งŒ ํˆฌ๋ช…ํ•˜๊ฒŒ ํ•ด์„œ ๊ทธ ๋ถ€๋ถ„๋งŒ ๋ณด์ด๊ฒŒ ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋งŒ๋“œ๋Š” ๋ฒ•์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด ๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Preview Add a label ๋ฐฐ๊ฒฝ์— ๋ ˆ์ด๋ธ”์„ ํ•˜๋‚˜ ๋„ฃ์–ด ํˆฌ๋ช…ํ•œ์ง€ ์•„๋‹Œ์ง€ ํ™•์ธํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด ์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค. let label = UILabel(frame: CGRect(x: view.center.x - 100, y: view.center.y - 100, width: 200, height: 200)) label.backgroundColor = .systemBlue label.textColor = .white label.font = UIFont.boldSystemFont(ofSize: 20) label.text = "Fomagran".. 2022. 7. 31.
[iOS/UI] UIBezierPath ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ (feat. EasierPath) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ’ป ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ์ง์ ‘ ์›ํ•˜๋Š” ๋ชจ์–‘์„ ๊ทธ๋ฆด ์ˆ˜ ์žˆ๋Š” UIBezierPath๋ฅผ ๋”์šฑ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” EasierPath์— ๋Œ€ํ•ด์„œ ์•Œ์•„ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~! UIBezierPath ํ‰์†Œ์— ์›ํ•˜๋Š” ๋ชจ์–‘์„ ์ง์ ‘ ์ปค์Šคํ…€ํ•ด์„œ ๊ทธ๋ฆด ๋•Œ UIBezierPath๋ฅผ ์ž์ฃผ ์‚ฌ์šฉ ํ–ˆ์—ˆ๋Š”๋ฐ์š”. ๋จผ์ € UIBezierPath๋ฅผ ์ด์šฉํ•ด์„œ ํ•ญ์•„๋ฆฌ ๋ชจ์–‘์„ ๊ทธ๋ฆฌ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 1. UIBezierPath ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ด ๊ทธ๋ ค์ค€๋‹ค. let bezierPath:UIBezierPath = UIBezierPath() bezierPath.move(to: CGPoint(x: 100, y: 100)) bezierPath.addLine(to: CGPoint(x: 200, y: 100)) bezier.. 2022. 5. 30.
[iOS/UI] UIBezierPath ์•ˆ์„ Gradient ์ปฌ๋Ÿฌ๋กœ ์ฑ„์šฐ๊ธฐ (Fill a UIBezierPath with Gradient Color) ์•ˆ๋…•ํ•˜์„ธ์š” Foma๐Ÿ’ป ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ UIBezierPath ์•ˆ์„ Gradient ์ปฌ๋Ÿฌ๋กœ ์ฑ„์šฐ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ TestView ๋ทฐ๋ฅผ ์•„๋ž˜์™€ ๊ฐ™์ด ์ดˆ๊ธฐํ™” ํ•ด์ค๋‹ˆ๋‹ค. class TestView: UIView { override init(frame: CGRect) { super.init(frame: frame) } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } override func draw(_ rect: CGRect) { } } UIBezierPath ์ด์ œ UIBezierPath๋ฅผ draw ๋ฉ”์„œ๋“œ ์•ˆ์— ๊ทธ๋ ค๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํƒ€์›ํ˜• ๊ฒฝ๋กœ๋ฅผ ์•„๋ž˜์™€ ๊ฐ™์ด ์ƒ์„ฑํ•ด ์ค๋‹ˆ๋‹ค.. 2022. 5. 2.
[iOS/UI] UIBezierPath์˜ ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒƒ (feat. ๋ชจ์–‘,๊ณก์„ ,์ง์„  ๊ทธ๋ฆฌ๊ธฐ) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ’ป ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ์›ํ•˜๋Š” ๋ชจ์–‘์„ ์ง์ ‘ ๊ทธ๋ฆด ์ˆ˜ ์žˆ๋Š” UIBezierPath์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์ „๋ถ€ํ„ฐ ๋‹ค๋ฃจ๊ณ  ์‹ถ์€ ์ฃผ์ œ์˜€๋Š”๋ฐ ๋“œ๋””์–ด ์ •๋ฆฌํ•˜๊ฒŒ ๋˜๋„ค์š”..! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ UIBezierPath๋ž€? UIBezierPath๋Š” UIKit์—์„œ ๊ทธ๋ฆฌ๊ธฐ(Drawing)์— ์†ํ•ด์žˆ๋Š” ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์–ด๋–ค ๊ฒƒ์„ ๊ทธ๋ฆฌ๊ธฐ ์œ„ํ•œ ๊ธฐ๋Šฅ๋“ค์ด ์†ํ•ด์žˆ๊ฒ ์ฃ ? ์• ํ”Œ ๊ณต์‹ ๋ฌธ์„œ์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ •์˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. A path that consists of straight and curved line segments that you can render in your custom views. ํ•ด์„ํ•˜๋ฉด view์—์„œ ๋ Œ๋”๋ง ํ•  ์ˆ˜ ์žˆ๋Š” ์ง์„ ๊ณผ ๊ณก์„ ์œผ๋กœ ๊ตฌ์„ฑ๋œ ๊ฒฝ๋กœ๋ผ๊ณ  ํ•˜๋„ค์š”. Initializer Bez.. 2022. 3. 21.
[iOS/UI] CALayer๋ž€? (feat. ์• ๋‹ˆ๋ฉ”์ด์…˜ ์›๋ฆฌ) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ’ป ์ž…๋‹ˆ๋‹ค! ์ €๋ฒˆ ์‹œ๊ฐ„์— Core Animation์— ๋Œ€ํ•œ ๊ธ€์„ ์ž‘์„ฑํ–ˆ๋Š”๋ฐ์š”. Core Animation์„ ๊ณต๋ถ€ํ•˜๋‹ค ๋ณด๋‹ˆ Layer๊ฐ€ ๊ฑฐ์˜ ์ „๋ถ€๋ผ๊ณ  ํ•ด๋„ ๋˜๊ฒ ๋”๋ผ๊ตฌ์š”.. ๊ทธ๋ž˜์„œ ๋”ฐ๋กœ Layer์— ๋Œ€ํ•ด ์ •๋ฆฌํ•˜๋Š” ๊ธ€์„ ์ž‘์„ฑํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. (ํ˜น์‹œ Core Animation์— ๋Œ€ํ•ด ์ž˜ ๋ชจ๋ฅด์‹œ๋Š” ๋ถ„๋“ค์œผ ์—ฌ๊ธฐ ์—์„œ ํ™•์ธํ•ด์ฃผ์„ธ์š”!) ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ CALayer๋ž€? Layer์˜ ์‚ฌ์ „์  ์˜๋ฏธ๋Š” ๊ฒน,๋ง‰,์ธต,๋‹จ๊ณ„๋ฅผ ๋œปํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์ „์  ์˜๋ฏธ์™€ ๊ฐ™์ด iOS์—์„œ๋„ ์•„๋ž˜์™€ ๊ฐ™์ด ๊ณ„์ธต์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋˜๋Š”๋ฐ์š”. ์ •ํ™•ํ•˜๊ฒŒ๋Š” ์ด๋ฏธ์ง€ ๊ธฐ๋ฐ˜ ์ปจํ…์ธ ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ํ•ด๋‹น ์ปจํ…์ธ ์—์„œ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฐœ์ฒด์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๋ฐฐ๊ฒฝ์ƒ‰,ํ…Œ๋‘๋ฆฌ ๋ฐ ๊ทธ๋ฆผ์ž์™€ ๊ฐ™์ด ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ํ™”๋ฉด์— ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ์  ์†์„ฑ์„ ๊ด€๋ฆฌํ•˜๋Š”.. 2022. 3. 17.
[iOS/UI] Core Animation์ด๋ž€? (feat. CALayer) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ’ป ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ์ž‘๋™๋˜๋Š” ์›๋ฆฌ์— ๋Œ€ํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ iOS์—์„œ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์‹œ์Šคํ…œ์„ ๋‹ด๋‹นํ•˜๋Š” Core Animation์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Core Animation์ด๋ž€? ๋ทฐ ๋ฐ ๊ธฐํƒ€ ์‹œ๊ฐ์  ์š”์†Œ์— ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋ฒ”์šฉ ์‹œ์Šคํ…œ ๊ทธ๋ž˜ํ”ฝ ๋ Œ๋”๋ง ๋ฐ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ธํ”„๋ผ ๋ทฐ์™€ ํ†ตํ•ฉ๋˜์–ด ์ฝ˜ํ…์ธ  ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์œ„ํ•œ ๋” ๋‚˜์€ ์„ฑ๋Šฅ๊ณผ ์ง€์›์„ ์ œ๊ณตํ•˜๋Š” ๊ธฐ์ˆ  ์•„๋ž˜์™€ ๊ฐ™์ด UIKit ๋ฐ AppKit์˜ ๊ทผ๊ฐ„์ด ๋˜๋Š” ๊ธฐ์ˆ ๋กœ iOS ๋ฐ OS X๋ฅผ ์•ฑ์„ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ๋ฌด์กฐ๊ฑด Core Animation์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Core Animation์„ ์ง์ ‘ ์‚ฌ์šฉํ•  ํ•„์š”๋Š” ์—†์ง€๋งŒ ์‚ฌ์šฉํ•  ๋•Œ Core Animation์ด ์–ด๋– ํ•œ ์›๋ฆฌ๋กœ ์ˆ˜ํ–‰๋˜๋Š”์ง€ ์ดํ•ดํ•  ํ•„์š”.. 2022. 3. 16.
[๐Ÿงฉ Creative Coding] ์ปฌ๋Ÿฌํ’€ํ•œ ๋ฌผ๊ฒฐ ์›จ์ด๋ธŒ ๋งŒ๋“ค๊ธฐ(feat. Interactive Developer) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ’ป ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ์ €๋ฒˆ์— ์ค„์— ๋งค๋‹ฌ๋ ค ํ”๋“ค๋ฆฌ๋Š” ์ƒ์ž ๋งŒ๋“ค๊ธฐ ์— ์ด์–ด์„œ ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ๋””๋ฒจ๋กœํผ๋‹˜์˜ ํŠœํ† ๋ฆฌ์–ผ ์›€์ง์ด๋Š” ์›จ์ด๋ธŒ๋ฅผ Swift๋กœ ๊ตฌํ˜„ํ•œ ๊ฒƒ์„ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ ์•„๋ž˜๋Š” ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ๋””๋ฒจ๋กœํผ ๊น€์ข…๋ฏผ๋‹˜์˜ ํŠœํ† ๋ฆฌ์–ผ ์˜์ƒ์ž…๋‹ˆ๋‹ค. Preview 1. S์ž ๊ณก์„  ๊ทธ๋ฆฌ๊ธฐ S์ž ๊ณก์„ ์„ ๊ทธ๋ฆฌ๊ธฐ ์œ„ํ•ด์„œ ์‹œ์ž‘๊ณผ ๋์„ ์ •ํ•ด์ฃผ๊ณ  ์‚ฌ์ด์— ๋‘ ์ ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์ด์˜ ์ ์„ ์œ„๋กœ ๋‹น๊ธฐ๊ฑฐ๋‚˜ ์•„๋ž˜๋กœ ๋‹น๊ฒจ์ฃผ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ S์ž ๊ณก์„ ์ด ๊ทธ๋ ค์ง‘๋‹ˆ๋‹ค. 2. ์›€์ง์ด๋Š” ์›จ์ด๋ธŒ ๋งŒ๋“ค๊ธฐ ์—ฐ๊ฒฐ๋œ ์„ ์˜ ์‚ฌ์ด ๋‘ ์ ์„ ์œ„ ์•„๋ž˜๋กœ ์ด๋™์‹œํ‚ค๋ฉด ์›จ์ด๋ธŒ๊ฐ€ ์›€์ง์ด๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ฒ ์ฃ ? 3. ์—ฌ๋Ÿฌ ์›จ์ด๋ธŒ ๋งŒ๋“ค๊ธฐ ์šฐ์„  ์‹œ์ž‘๊ณผ ๋์„ ์•„๋ž˜์™€ ๊ฐ™์ด ๋‘ ์ ์œผ๋กœ ์ •ํ•ด์ค๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์‚ฌ์ด์— ์žˆ๋Š” ์  4๊ฐœ๋ฅผ 1,2,3,4๋ผ๊ณ  ๋ถ€.. 2021. 12. 16.
[๐Ÿงฉ Creative Coding] ์ค„์— ๋งค๋‹ฌ๋ ค ํ”๋“ค๋ฆฌ๋Š” ์ƒ์ž ๋งŒ๋“ค๊ธฐ (feat. Interactive Developer) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ’ป ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ์ค„์— ๋งค๋‹ฌ๋ ค ํ”๋“ค๋ฆฌ๋Š” ์ƒ์ž๋ฅผ ๋งŒ๋“ค์–ด ๋ณผ๊ฑด๋ฐ์š”. ์ด๊ฑด ์ œ๊ฐ€ ์กด๊ฒฝํ•˜๋Š” ๊ฐœ๋ฐœ์ž์ด๊ธฐ๋„ ํ•œ ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ๋””๋ฒจ๋กœํผ ๊น€์ข…๋ฏผ๋‹˜์˜ ์œ ํŠœ๋ธŒ ์ฑ„๋„์— ์˜ฌ๋ผ์˜จ ํŠœํ† ๋ฆฌ์–ผ ์ค‘ ํ•˜๋‚˜์ธ๋ฐ์š”. ์˜ˆ์ „๋ถ€ํ„ฐ ์ด๋Ÿฐ ์ฐฝ์˜์ ์ธ ์ฝ”๋”ฉ, ์˜ˆ์ˆ ์ ์ธ ์ฝ”๋”ฉ์„ ํ•˜๊ณ ์‹ถ์€ ์š•์‹ฌ์ด ๋งŽ์•˜์—ˆ๋Š”๋ฐ ์ด๋ฒˆ ๊ธฐํšŒ์— ๊น€์ข…๋ฏผ๋‹˜์„ ๋”ฐ๋ผ์„œ ๊ตฌํ˜„ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์œ„ ์˜์ƒ์„ ๋ณด๋ฉฐ ๋‚˜๋ฆ„ ์ œ ๋ฐฉ์‹๋Œ€๋กœ Swift๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ตฌํ˜„ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ View ๋จผ์ € ์ƒ์ž์™€ ๋นจ๊ฐ„ ์ ์„ UIView๋กœ ์„ธํŒ…ํ•ด์ค๋‹ˆ๋‹ค. (์ €๋Š” ์ƒ์ž ๊ฐ€์šด๋ฐ์— ์ œ ์ด๋ฆ„์„ ๋„ฃ์–ด์„œ ๋ณด์—ฌ์ค„ ๊ฑฐ๊ธฐ ๋•Œ๋ฌธ์— label๋„ ๋„ฃ์—ˆ์Šต๋‹ˆ๋‹ค.) let square:UIView = { let view:UIView = UIView() view.backgroundColor = .systemCyan .. 2021. 11. 23.
[iOS/UI] ์ด๋ฏธ์ง€ ์คŒ์œผ๋กœ ํ™•๋Œ€/์ถ•์†Œํ•˜๊ธฐ(feat. ์Šคํฌ๋กค๋ทฐ) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ’ป ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜ ์•Œ์•„๋ณผ ๊ฒƒ์€ ์ด๋ฏธ์ง€๋ฅผ ํ™•๋Œ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Storyboard ๋ ˆ์ด์•„์›ƒ์€ ์•„๋ž˜์™€ ๊ฐ™์ด ์Šคํฌ๋กค๋ทฐ์— ์ด๋ฏธ์ง€๋ทฐ๊ฐ€ ํฌํ•จ๋˜๊ฒŒ ํ•ด์ฃผ์„ธ์š”. ViewController ๋จผ์ € ์ด๋ฏธ์ง€๋ทฐ์™€ ์Šคํฌ๋กค๋ทฐ๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ์„ธ์š”. @IBOutlet weak var imageView: UIImageView! @IBOutlet weak var scrollView: UIScrollView! ์ดˆ๊ธฐ ์„ธํŒ…์€ ์•„๋ž˜์™€ ๊ฐ™์ด ํ•ด์ฃผ์„ธ์š”. 1. ์ด๋ฏธ์ง€๋ทฐ์˜ ์ด๋ฏธ์ง€๋ฅผ ์›ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์„ธํŒ…ํ•ด์ค๋‹ˆ๋‹ค. 2. ์Šคํฌ๋กค๋ทฐ์˜ ๋”œ๋ฆฌ๊ฒŒ์ดํŠธ๋ฅผ ํ˜„์žฌ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋กœ ์„ค์ •ํ•ด์ฃผ์„ธ์š”. (์•„์ง ์˜ค๋ฅ˜๊ฐ€ ๋‚ ๊ฑฐ์—์š”.) 3. ์Šคํฌ๋กค๋ทฐ์˜ ์ฒ˜์Œ ์คŒ์Šค์ผ€์ผ์„ ์ •ํ•ด์ค๋‹ˆ๋‹ค. (๋”ฐ๋กœ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด 1.0์ž…๋‹ˆ๋‹ค.) 4. ์Šคํฌ๋กค๋ทฐ์˜ ์ตœ์†Œ ์คŒ์Šค์ผ€์ผ์„ ์ •ํ•ด์ค๋‹ˆ๋‹ค... 2021. 11. 3.
[iOS] UIKit์—์„œ SwiftUI Preview ์‚ฌ์šฉํ•ด๋ณด๊ธฐ ์•ˆ๋…•ํ•˜์„ธ์š” Foma๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์–ผ๋งˆ ์ „์— ์œ ํŠœ๋ธŒ์—์„œ ๋งŒํ™”๊ฒฝ iOS ๊ฐœ๋ฐœ๊ธฐ๋ฅผ ๋ณด๋‹ค๊ฐ€ (https://www.youtube.com/watch?v=W_1FoBtaV7A) UI๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š”๋ฐ ์Šคํ† ๋ฆฌ๋ณด๋“œ์™€ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ์žฅ๋‹จ์ ์„ ๋ชจ๋‘ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š”๊ฒŒ UIKit์—์„œ Preview๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ํ•˜๋”๋ผ๊ตฌ์š”. Preview๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ๋กœ ํ™”๋ฉด์„ ๊ตฌํ˜„ํ•˜๋”๋ผ๋„ ์ง๊ด€์ ์œผ๋กœ ํ™”๋ฉด์„ ๋ณผ ์ˆ˜ ์žˆ๊ณ  ๋˜ํ•œ ์Šคํ† ๋ฆฌ๋ณด๋“œ๋กœ ๊ฐœ๋ฐœํ•  ๋•Œ ์ƒ๊ธฐ๋Š” ์ถฉ๋Œ ๋ฌธ์ œ ๋“ฑ์„ ์—†์• ์ค„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด์ฃ ! ๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€ UIKit์—์„œ Preview๋ฅผ ์–ด๋–ป๊ฒŒ ์ ์šฉํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค~ UIViewController + Extension ์•„๋ž˜์™€ ๊ฐ™์ด ํ”„๋ฆฌ๋ทฐ ์ต์Šคํ…์…˜์„ ๋งŒ๋“ค์–ด์ค˜์„œ ์–ด๋–ค ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์—์„œ๋“  ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. import Swif.. 2021. 7. 28.
[iOS] UI Test ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ ์•ˆ๋…•ํ•˜์„ธ์š” Foma๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์ €๋ฒˆ ํฌ์ŠคํŒ…์—” Unit Test์— ๋Œ€ํ•ด์„œ ๋‹ค๋ค˜๋Š”๋ฐ์š” ์˜ค๋Š˜์€ UI๋ฅผ ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜ ์žˆ๋Š” UI Test์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ UITest Bundle ๋งŒ๋“ค๊ธฐ Project - General ํƒญ์œผ๋กœ ์ด๋™ํ•˜์…”์„œ ์™ผ์ชฝ ํ•˜๋‹จ ๋ถ€๋ถ„์— +๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”. ๊ทธ๋ฆฌ๊ณค ui๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  UI Testing Bundle์„ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”. Storyboard ์•„๋ž˜์™€ ๊ฐ™์ด ํšŒ์›๊ฐ€์ž… ํ•˜๋Š” ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๊ตฌ์„ฑํ• ๊ฑด๋ฐ์š”. ์ด๋ฉ”์ผ ํ…์ŠคํŠธํ•„๋“œ,๋น„๋ฐ€๋ฒˆํ˜ธ ํ…์ŠคํŠธํ•„๋“œ,๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ ํ…์ŠคํŠธํ•„๋“œ,ํšŒ์›๊ฐ€์ž… ๋ฒ„ํŠผ์œผ๋กœ ๊ตฌ์„ฑํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. SignupViewController IBOutlet์„ ๋ชจ๋‘ ์—ฐ๊ฒฐ์‹œ์ผœ์ฃผ๊ณ  signupButton์„ ๋ˆŒ๋ €์„ ๋•Œ ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ํ™•์ธ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋‹ค๋ฅด๋‹ค๋ฉด ๊ฒฝ๊ณ ์ฐฝ์„ ๋„์šฐ๋„๋ก ํ•˜์˜€.. 2021. 7. 20.
[iOS/UI] ์ปฌ๋ ‰์…˜๋ทฐ์…€ ์ž๋™์œผ๋กœ ํฌ๊ธฐ ์กฐ์ •ํ•˜๊ณ  ์™ผ์ชฝ ์ •๋ ฌํ•˜๊ธฐ (CollectionViewCell Automaticsize & LeftAlign) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ์…€์„ ์™ผ์ชฝ์œผ๋กœ ์ •๋ ฌ์‹œํ‚ค๊ณ  ์…€ ์•ˆ์— ์žˆ๋Š” ํ…์ŠคํŠธ์— ๋”ฐ๋ผ์„œ ์ž๋™์œผ๋กœ ํฌ๊ธฐ๊ฐ€ ์กฐ์ •๋˜๋Š” ๊ฒƒ์„ ์•Œ์•„๋ณด๋„๋ก ํ• ๊ฒŒ์š”! (์ผ๋ฐ˜์ ์œผ๋กœ ์ปฌ๋ ‰์…˜๋ทฐ์…€์„ ๋งŒ๋“ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋ ๊ฑฐ์—์š”!) ์˜ค๋Š˜์€ ์•„๋ž˜์™€ ๊ฐ™์ด ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ StoryBoard ์Šคํ† ๋ฆฌ๋ณด๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค์ •ํ•ด์ฃผ์„ธ์š”. CollectionViewCell ์ปฌ๋ ‰์…˜๋ทฐ์…€์— ๋ ˆ์ด๋ธ”์„ ์—ฐ๊ฒฐํ•ด์ค๋‹ˆ๋‹ค. class CollectionViewCell: UICollectionViewCell { @IBOutlet weak var label: UILabel! } ViewController ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์— ์ปฌ๋ ‰์…˜๋ทฐ๋ฅผ ์—ฐ๊ฒฐํ•ด์ค๋‹ˆ๋‹ค. @IBOutlet weak var collection: UICollectionView! ์ปฌ๋ ‰์…˜๋ทฐ ๋”œ๋ฆฌ๊ฒŒ์ดํŠธ.. 2021. 6. 29.
728x90
๋ฐ˜์‘ํ˜•