๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŽ iOS

[Swift] Anchor ์‚ฌ์šฉํ•ด์„œ UIView ๋„ฃ๊ธฐ

by ํ‹ด๋”” 2020. 9. 28.
728x90
๋ฐ˜์‘ํ˜•

๋“ค์–ด๊ฐ€๊ธฐ์— ์•ž์„œ...

Programmatically ๋ทฐ์— ๋ทฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. interface builder ์—์„œ UIView๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  frame์„ ์ง€์ •ํ•ด ์ค˜๋„ ๋˜์ง€๋งŒ ์ฝ”๋“œ๋กœ view๋ฅผ ์ƒ์„ฑํ•ด์„œ addSubView ํ•ด์ฃผ๊ฑฐ๋‚˜ ํœด๋Œ€ํฐ ๋ฐฉํ–ฅ(width๊ฐ€ ๋ฐ”๋€Œ๋Š” ๊ฒฝ์šฐ), safe Area ๋“ฑ์€ Anchor๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด ํŽธํ•  ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ „์— ํฌ์ŠคํŒ… ํ•œ collectionView์—์„œ ์‹œ์ž‘ํ•˜๋ฉฐ ์ด๋•Œ ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜๋Š” width๊ฐ€ ์ œ๋Œ€๋กœ ๋‚˜์˜ค์ง€ ์•Š์•„ ์งค๋ฆฌ๋Š” ๊ฒฝ์šฐ์˜€์Šต๋‹ˆ๋‹ค. Anchor๋ฅผ ํ†ตํ•ด์„œ ์–ด๋–ป๊ฒŒ ๊ณ ์น  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋ด…์‹œ๋‹ค.


์ฝ”๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ view๋ฅผ ์ž‘์„ฑํ•ด์„œ ๋„ฃ์–ด์ฃผ๊ธฐ ์œ„ํ•ด storyboard์— ์ถ”๊ฐ€ํ•œ ๋ทฐ๋ฅผ ์‚ญ์ œํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค

์—ฐ๊ฒฐ๋œ IBOutlet ์‚ญ์ œ๋„ ๊ผญ ํ•ด์ค๋‹ˆ๋‹ค

 

 

ViewController.swift ํŒŒ์ผ๋กœ ๊ฐ‘๋‹ˆ๋‹ค

์šฐ์„  ์ถ”๊ฐ€ํ•ด ์ค„ ๋ทฐ์ธ UICollectionView๋กœ ์„ ์–ธํ•ด ์ค€ ํ”„๋กœํผํ‹ฐ์—์„œ 

translatesAutoresizingMaskIntoConstraints๋ฅผ false๋กœ ์ง€์ •ํ•ด ์ค๋‹ˆ๋‹ค.

    let collectionView: UICollectionView = {
        let layout = UICollectionViewFlowLayout()
        layout.minimumLineSpacing = 0
        
        layout.scrollDirection = .vertical
        layout.sectionInset = .zero
        
        let cv = UICollectionView(frame: .zero, collectionViewLayout: layout)
        cv.backgroundColor = .green
        
        // collectionView์˜ Autorezing mask๋ฅผ false๋กœ ์ง€์ •ํ•ด ์ค๋‹ˆ๋‹ค
        cv.translatesAutoresizingMaskIntoConstraints = false
        
        return cv
    }()

์ฝ”๋“œ๋กœ ์ œ์•ฝ ์‚ฌํ•ญ์„ ์ง€์ •ํ•ด ์ค„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— 

autoresizing mask๋ฅผ false๋กœ ์ง€์ •ํ•ด ์ฃผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

+) default ๊ฐ’์€ true

 

๋‹ค์Œ์€ viewDidLoad()๋ฅผ ์ž‘์„ฑํ•ด ์ค๋‹ˆ๋‹ค

๋ทฐ๊ฐ€ ๋กœ๋“œ ๋ ๋•Œ self.view์— collectionView๋ฅผ ๊ณ„์ธต ๊ตฌ์กฐ์— ์ถ”๊ฐ€ํ•ด ์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

anchor๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ฃผ์˜ ํ•  ์ ์€ anchor๋งŒ ์ง€์ •ํ•œ๋‹ค๊ณ  ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ

๊ณ„์ธต ๊ตฌ์กฐ์— ์ถ”๊ฐ€ํ•ด ์ฃผ์–ด์•ผ ์ œ์•ฝ ์กฐ๊ฑด์„ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

view.addSubview(collectionView)

์ด์ œ constraints๋ฅผ ์ž‘์„ฑํ•ด ์ค๋‹ˆ๋‹ค

์ด constraints๋Š” activate ํ•ด์ฃผ์–ด์•ผ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑํ•ด ์ค๋‹ˆ๋‹ค.

        let constraints = [
            collectionView.heightAnchor.constraint(equalToConstant: 180),
            collectionView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
            collectionView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor),
            collectionView.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 300)
        ]
        
        NSLayoutConstraint.activate(constraints)

collectionView์˜ ๋†’์ด๋ฅผ 180์œผ๋กœ ์ง€์ •ํ•˜๊ณ 

collectionView์˜ leading์„ self.view์˜ leading๊ณผ 0์œผ๋กœ ์ง€์ •ํ•˜๋ฉด

collectionView์˜ ์‹œ์ž‘์ ์ด view์˜ ์‹œ์ž‘์ ๊ณผ ๊ฐ™์•„์ง‘๋‹ˆ๋‹ค

trailing๋„ ๋˜‘๊ฐ™์ด ์ง€์ •ํ•ด ์ค๋‹ˆ๋‹ค

์ด๋•Œ bottom์€ ์•ˆ ์ž‘์„ฑํ•˜๊ณ  top๋งŒ ์ง€์ •ํ•ด ์ฃผ๋Š” ์ด์œ ๋Š”

๋†’์ด๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ ˆ์ด์•„์›ƒ ์ƒ ์˜ค๋ฅ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

 

์‹คํ–‰ํ•ด ๋ณด๋ฉด

์ด๋Ÿฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

 

 

 

์™œ xcode 12 Show Quick Help inspector์˜ Open in Developer Documentation ๋ˆ„๋ฅด๋ฉด

xcode ์ข…๋ฃŒ๋˜๋Š” ๊ฑด๊ฐ€์š”... ๐Ÿง๐Ÿง๐Ÿง

 

ํ‹€๋ฆฌ๊ฑฐ๋‚˜ ์ด์ƒํ•œ ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€ ๋ถ€ํƒ๋“œ๋ ค์š”! ์–ธ์ œ๋‚˜ ํ™˜์˜์ž…๋‹ˆ๋‹ค!

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€