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. ์ด์ 1 2 3 4 5 ๋ค์ 728x90 ๋ฐ์ํ