๋ทฐ ๊ณ์ธต ๊ตฌ์กฐ ์ ํ์๋ทฐ ์ถ๊ฐํ๊ธฐ - addSubview()
์คํ ๋ฆฌ๋ณด๋์์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ๋ทฐ๋ฅผ ์บ๋ฒ์ค๋ก ๋์ด์์ ์์ฑํฉ๋๋ค.
๋ทฐ๋ฅผ ํ๋ก๊ทธ๋๋ฐ์ ์ผ๋ก๋ ์์ฑํ ์๋ ์์ต๋๋ค.
๋ทฐ๋ฅผ ์์ฑํ ๋ ์ผ๋ฐ์ ์ผ๋ก ํด๋น ๋ทฐ์ ์ด๊ธฐ ํฌ๊ธฐ์ ์์น๋ฅผ ํฅํ ์ง์ ๋ superview๋ฅผ ๊ธฐ์ค์ผ๋ก ์ง์ ํฉ๋๋ค.
์๋ ์์ ์ฒ๋ผ ๋ทฐ๋ฅผ ์์ฑํ๊ฒ ๋๋ฉด ํด๋น ๋ทฐ์ ์ผ์ชฝ ์๋จ ๋ชจ์๋ฆฌ๊ฐ ์ถํ ์ค์ ๋ superview์์ขํ ์์คํ ์์ (10, 10) ์ง์ ์ ๋ฐฐ์น๋ฉ๋๋ค.
let rect = CGRect(x: 10, y: 10, width: 100, height: 100)
let myView = UIView(frame: rect)
์ ์ฝ๋ ์ฒ๋ผ ์์ฑํ ๋ทฐ๋ฅผ superview์ subview๋ก ์ถ๊ฐํ๋ ค๋ฉด addSubview(_:)๋ฉ์๋๋ฅผ ํธ์ถํด์ผ ํฉ๋๋ค.
addSubview๋ฅผ ํตํด ๋ทฐ์ ์ฌ๋ฌ๊ฐ์ subview๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. subview๋ ์ถ๊ฐ ๋ ๋ ์ด๋ฏธ ์ถ๊ฐ๋์ด์๋ ๊ธฐ์กด subview๋ค ์ฆ, siblingview๋ค ์์ ๋ฐฐ์น๊ฐ ๋ฉ๋๋ค.
class ViewController: UIViewController {
let rect = CGRect(x: 10, y: 10, width: 100, height: 100)
let myView = UIView(frame: rect)
override func viewDidLoad() {
super.viewDidLoad()
setLayout()
}
func setLayout() {
view.addSubview(myView) //view๋ viewcontroller๊ฐ ๊ธฐ๋ณธ์ผ๋ก ๊ฐ์ง๊ณ ์๋ ์ต์์ UIView
}
}
insertSubview(_:aboveSubview:) and insertSubview(_:belowSubview:) ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์๋ธ๋ทฐ์ ์๋์ ์ธ z-์์๋ฅผ ์ง์ ํ ์๋ ์์ต๋๋ค.
์ด๋ฏธ ์ถ๊ฐ๋ ์๋ธ๋ทฐ์ ์์น๋ฅผ ๋ฐ๊พธ๋ ค๋ฉด exchangeSubview(at:withSubviewAt:) ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
๊ทธ๋ฐ๋ฐ apple์ ๊ณต์ api๋ ํ๋ฒ์ ํ๋์ ์๋ธ๋ทฐ๋ง ์ถ๊ฐํ ์ ์๊ธฐ ๋๋ฌธ์ addSubview๋ฅผ ๊ต์ฅํ ์ฌ๋ฌ๋ฒ ์จ์ค์ผํ๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
์ด๋ฌํ ๋จ์ ์ ํด๊ฒฐํ๊ธฐ ์ํด ํ๋จ์ extension์ ์ฌ์ฉํ๋ฉด view ๋ฐฐ์ด์ ํ๋ผ๋ฏธํฐ๋ก ๋ฃ์ด ํ๋ฒ์ ์ฌ๋ฌ๊ฐ์ ์๋ธ๋ทฐ๋ฅผ ์ถ๊ฐ ํ ์ ์์ต๋๋ค.
extension UIView {
func addSubviews(_ views: [UIView]) {
views.forEach { self.addSubview($0) }
}
}
์ด๋ ๊ฒ ์ํ๋ ๋ทฐ๋ค์ ์์ฑํ๊ณ ๊ณ์ธต๊ตฌ์กฐ๋ฅผ ์ถ๊ฐํด์ค ํ ์๋ ์คํ ๋ ์ด์์์ ์ค์ ํ์ฌ ๋ทฐ์ ํฌ๊ธฐ์ ์์น๊ฐ ๋๋จธ์ง ๋ทฐ ๊ณ์ธต ๊ตฌ์กฐ์ ๋ณ๊ฒฝ์ ๋ฐ๋ผ ์ด๋ป๊ฒ ๋ณํ๋์ง ์ ์ดํ ์ ์์ต๋๋ค
'iOS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[iOS] pod init ์ค๋ฅ ์ ํด๊ฒฐ๋ฐฉ๋ฒ (0) | 2023.02.17 |
---|---|
[iOS] ์ปค์คํ ํฐํธ ์ถ๊ฐ ๋ฐฉ๋ฒ (0) | 2023.02.16 |
[iOS] Xcode์ Target ์ด๋? (0) | 2023.02.13 |
[iOS] iOS Concurrency - 1. GCD/Operation, ๋๊ธฐ/๋น๋๊ธฐ, ์ง๋ ฌ/๋์ (0) | 2023.02.11 |
[iOS] Rx์์ด ๊ตฌํํ๋ MVVM๊ธฐ์ด (0) | 2023.02.09 |