View ์์ฑํ๊ธฐ
์ผ๋ฐ์ ์ผ๋ก ์คํ ๋ฆฌ๋ณด๋์ ๋ทฐ๋ฅผ ๋ง๋ค ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก๋ถํฐ ์บ๋ฒ์ค์ ๋์ด๋ค ๋์์ ๋ง๋ญ๋๋ค.
ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก๋ ์์ฑํ ์ ์์ต๋๋ค.
๋ทฐ๋ฅผ ์์ฑํ ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ฏธ๋์ super ๋ทฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ด๊ธฐ ํฌ๊ธฐ์ ์์น๋ฅผ ์ง์ ํฉ๋๋ค.
๋ค์ ์ฝ๋๋ ๋ทฐ๋ฅผ ์์ฑํ๊ณ super ๋ทฐ์ ์ขํ๊ณ์ ์๋ ์ (10, 10)์ ์ผ์ชฝ ์๋จ ๋ชจ์๋ฆฌ๋ฅผ ๋ฐฐ์นํฉ๋๋ค.
let rect = CGRect(x: 10, y: 10, width: 100, height: 100)
let myView = UIView(frame: rect)
๋ค๋ฅธ ๋ทฐ์ ํ์ ๋ทฐ๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด super ๋ทฐ์์ addSubView(_:) ๋ฉ์๋๋ฅผ ํธ์ถํ์ธ์.
๋ทฐ์ ํ์ ๋ทฐ๋ฅผ ์ฌ๋ฌ ๊ฐ ์ถ๊ฐํ ์ ์์ผ๋ฉฐ iOS์์๋ ํ์ ๋ทฐ๊ฐ ์๋ก ๊ฒน์ณ์์ ์ ์์ต๋๋ค.
- addSubView(_:): ๋ค๋ฅธ ๋ทฐ ๋์ ํ์ ๋ทฐ๋ฅผ ์ถ๊ฐ
- insertSubview(_:avoveSubView:): ๋ค๋ฅธ ๋ทฐ ์์ ๋ทฐ ์ฝ์
- insertSubview(_:belowSubView:): ๋ค๋ฅธ ๋ทฐ ์๋์ ๋ทฐ ์ฝ์
- exchange Subview(at: with Subview At:): ์ง์ ํ ์ธ๋ฑ์ค์ ํ์ ๋ทฐ๋ฅผ ๊ตํ
๋ทฐ ๋๋ก์ ์ฌ์ดํด
๋ทฐ ๋๋ก์์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์์ ๋ฐ๋ผ ๋ฐ์ํฉ๋๋ค.
๋ทฐ๊ฐ ์ฒ์ ํ์๋๊ฑฐ๋ ๋ ์ด์์ ๋ณ๊ฒฝ์ผ๋ก ์ธํด ๋ทฐ์ ์ ์ฒด๋ ์ผ๋ถ๊ฐ ํ์๋๋ฉด ์์คํ ์์ ๋ทฐ์ ์ฝํ ์ธ ๋ฅผ ๊ทธ๋ฆฌ๋๋ก ์์ฒญํฉ๋๋ค.
UIKit ๋๋ Core Graphics๋ฅผ ์ฌ์ฉํ๋ ์ฌ์ฉ์ ์ ์ ์ฝํ ์ธ ๊ฐ ํฌํจ๋ ๋ทฐ์ ๊ฒฝ์ฐ ์์คํ ์ ๋ณด๊ธฐ์ draw(_:) ๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค.
์ด ๋ฉ์๋๋ ๊ทธ๋ํฝ ์ฝํ ์คํธ์ ๋ทฐ ์ฝํ ์ธ ๋ฅผ ๊ทธ๋ฆฌ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํ๋ฉ๋๋ค.
์ด๋ ๊ฒ ํจ์ผ๋ก์จ ๋ทฐ ์ฝํ ์ธ ๊ฐ ํ๋ฉด์์ ์๊ฐ์ ์ผ๋ก ๋ํ๋ฉ๋๋ค.
๋ทฐ์ ์ฝํ ์ธ ๊ฐ ๋ณ๊ฒฝ๋๋ฉด ๋ค์ ๊ทธ๋ ค์ ธ์ผ ํ๋ค๊ณ ์์คํ ์ ์๋ฆฌ๋ ๊ฒ์ ๊ฐ๋ฐ์์ ์ฑ ์์ ๋๋ค.
๋ทฐ์ setNeedsDisplay() ๋๋ setNeedsDisplay(_:) ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ์์ ์ ์ํํ ์ ์์ต๋๋ค.
์ด ๋ฉ์๋๋ ๋ค์ ๋๋ก์ ์ฌ์ดํด ๋์ ๋ทฐ๋ฅผ ์ ๋ฐ์ดํธํด์ผ ํ๋ค๊ณ ์์คํ ์ ์๋ฆฝ๋๋ค.
๋ทฐ๋ฅผ ์ ๋ฐ์ดํธํ๊ธฐ ์ํด์ ๋ค์ ๋๋ก์ ์ฌ์ดํด๊น์ง ๊ธฐ๋ค๋ ค์ผ ํ๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ ๋ทฐ์์ ์ด ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ๋์์ ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค.
OpenGL ES๋ฅผ ์ฌ์ฉํ์ฌ ๊ทธ๋ฆฌ๋ ๊ฒฝ์ฐ GLKView ํด๋์ค๋ฅผ ์ฌ์ฉํด์ผ ํจ
์ ๋๋ฉ์ด์
๋ทฐ ํ๋กํผํฐ์ ๋ณ๊ฒฝ ์ฌํญ๋ค์ ์ ๋๋ฉ์ด์ ํ ํ ์ ์์ต๋๋ค.
์ฆ, ํ๋กํผํฐ๋ฅผ ๋ณ๊ฒฝํ๋ฉด ํ์ฌ ๊ฐ์์ ์์ํด์ ์ง์ ํ ๊ฐ์ผ๋ก ๋๋๋ ์ ๋๋ฉ์ด์ ์ด ์์ฑ๋ฉ๋๋ค.
UIView ํด๋์ค์ ํ๋กํผํฐ ์ค์์ ์ ๋๋ฉ์ด์ ํ ํ ์ ์๋ ๊ฒ๋ค์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค
- frame
- var frame: CGRect {get set}
- super ๋ทฐ์ ์ขํ๊ณ์์ ๋ทฐ์ ์์น์ ํฌ๊ธฐ๋ฅผ ์ค๋ช ํ๋ ํ๋ ์ ์ฌ๊ฐํ
- bounds
- var bounds: CGRect {get set}
- ์์ฒด ์ขํ๊ณ์์ ๋ทฐ์ ์์น์ ํฌ๊ธฐ๋ฅผ ์ค๋ช ํ๋ ๊ฒฝ๊ณ ์ฌ๊ฐํ
- center
- var center: CGPoint {get set}
- ๋ทฐ์ ์ฌ๊ฐํ ํ๋ ์์ ์ค์ฌ์
- transform
- var transform: CGAffineTransform {get set}
- ๋ทฐ์ ๊ฒฝ๊ณ์ ์ค์ฌ์ ๊ธฐ์ค์ผ๋ก ๋ทฐ์ ์ ์ฉ๋๋ ๋ณํ์ ์ง์
- alpha
- alpha: CGFloat {get set}
- ๋ทฐ์ ์ํ ๊ฐ, ํฌ๋ช ๋
- backgroundColor
- @NSCopying var backgroundColor: UIColor? {get set}
- ๋ทฐ์ ๋ฐฐ๊ฒฝ์
๋ณ๊ฒฝ ์ฌํญ์ ์ ๋๋ฉ์ด์ ํํ๋ ค๋ฉด UIViewPropertyAnimator ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ ๊ฐ์ฒด์ ํธ๋ค๋ฌ ๋ธ๋ก์ ์ฌ์ฉํ์ฌ ๋ทฐ ํ๋กํผํฐ๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค.
์ด ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์ ๋๋ฉ์ด์ ์ ์ง์์๊ฐ๊ณผ ํ์ด๋ฐ์ ์ค์ ํ ์ ์์ง๋ง ์ค์ ์ ๋๋ฉ์ด์ ์ด ๊ทธ ์ฆ์ ์คํ๋ฉ๋๋ค.
๋ํ ํ๋กํผํฐ ๊ธฐ๋ฐ ์ ๋๋ฉ์ดํฐ๋ ์คํ ์ค์ ๋ฉ์ถ๊ฑฐ๋ ๋ํํ์ผ๋ก ๊ตฌ๋๋ ์ ์์ต๋๋ค.
- @MainActor class UIViewPropertyAnimator: NSObject
- ๋ทฐ์ ๋ํ ๋ณ๊ฒฝ์ฌํญ์ ์ ๋๋ฉ์ด์ ํ ํ๊ณ ํด๋น ์ ๋๋ฉ์ด์ ์ ๋์ ์์ ์ ํ์ฉํ๋ ํด๋์ค
์ค๋ ๋ฉ ๊ณ ๋ ค์ฌํญ
์ฑ์ ์ ์ ์ธํฐํ์ด์ค์ ๋ํ ์กฐ์์ ๋ฐ๋์ ๋ฉ์ธ ์ค๋ ๋์์ ์์ ํด์ผ ํฉ๋๋ค.
๋ฐ๋ผ์ UIView ํด๋์ค์ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ์ฝ๋๋ ๋ฐ๋์ ๋ฉ์ธ ์ค๋ ๋์์ ๋์ํด์ผ ํฉ๋๋ค.
์ด ๊ท์น์ด ํ์ ์๋ ์ ์ผํ ๊ฒฝ์ฐ๋ ๋ทฐ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ๋ฟ์ ๋๋ค.
๊ทธ ์ธ์๋ ๋ฐ๋์ ๋ฉ์ธ ์ค๋ ๋์์๋ง ์์ ํ์ธ์
'๐ iOS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[UIKit] UITableView (0) | 2022.04.01 |
---|---|
[UIKit] UIView(3) (0) | 2022.03.30 |
[UIKit] UIView(1) (0) | 2022.03.25 |
[UIKit] UIApplication (0) | 2022.03.24 |
[UIKit] ์ฑ์ ๋ผ์ดํ ์ฌ์ดํด (0) | 2022.03.22 |