๐Ÿ“ƒUIScrollView ์‚ฌ์šฉํ•˜๊ธฐ

sangheeยท2021๋…„ 10์›” 4์ผ
0

๐Ÿ‘iOS ์Šคํ„ฐ๋””

๋ชฉ๋ก ๋ณด๊ธฐ
8/10
post-thumbnail

๋ชฉํ‘œ

๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์— ์Šคํฌ๋กค๋ทฐ๋ฅผ ์ƒ์„ฑํ•ด๋ณผ ์˜ˆ์ •์ด๋‹ค. ์•„๋ž˜์˜ ํ™”๋ฉด์„ ๊ตฌํ˜„ํ•ด๋ณด์ž.

1. ์Šคํฌ๋กค๋ทฐ์™€ ๊ฒ€์ • ์‚ฌ๊ฐํ˜•๋“ค ๋งŒ๋“ค๊ธฐ

์Šคํฌ๋กค๋ทฐ์™€ ๋‘๊ฐœ์˜ ๊ฒ€์ •์ƒ‰ ๋ทฐ(firstView, secondView)๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

import UIKit

class ViewController: UIViewController {
    let scrollView: UIScrollView = {
        let scrollView = UIScrollView()
        scrollView.backgroundColor = .systemGray
        return scrollView
    }()
    let firstView: UIView = {
        let view = UIView()
        view.backgroundColor = .black
        return view
    }()
    let secondView: UIView = {
        let view = UIView()
        view.backgroundColor = .black
        return view
    }()
    let thirdView: UIView = {
        let view = UIView()
        view.backgroundColor = .black
        return view
    }()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .yellow
    }
}

2. ์Šคํฌ๋กค๋ทฐ ์ถ”๊ฐ€ํ•˜๊ธฐ

๋ทฐ์— ์Šคํฌ๋กค๋ทฐ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์Šค๋ƒ…ํ‚ท์„ ์‚ฌ์šฉํ•˜์—ฌ ์˜คํ† ๋ ˆ์ด์•„์›ƒ์„ ์„ค์ •ํ•œ๋‹ค. ์Šค๋ƒ…ํ‚ท์€ translatesAutoresizingMaskIntoConstraints = false๋ฅผ ์ž๋™์œผ๋กœ ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. ์Šคํฌ๋กค๋ทฐ์˜ ์œ„์•„๋ž˜๋Š” ๋ทฐ์™€ ๊ฐ™๊ฒŒ ํ•˜๊ณ , ์ขŒ์šฐ๋Š” ์•ฝ๊ฐ„์˜ ๊ฐ„๊ฒฉ์„ ๋‘์—ˆ๋‹ค.

import SnapKit

class ViewController: UIViewController {
    override func viewDidLoad() {
        ...
        view.addSubview(scrollView)

        scrollView.snp.makeConstraints {
            $0.top.bottom.left.right.equalToSuperview().inset(16)
        }
    }
}

3. ์Šคํฌ๋กค๋ทฐ์— ๊ฒ€์ • ์‚ฌ๊ฐํ˜•๋“ค ๋„ฃ๊ธฐ

์‚ฌ๊ฐํ˜•๋“ค์„ ์Šคํฌ๋กค๋ทฐ์— ๋„ฃ๋Š”๋‹ค. ์‚ฌ๊ฐํ˜•๋“ค์˜ top๊ณผ left์„ ์žก๊ณ  ๋„ˆ๋น„์™€ ๋†’์ด๊ฐ’์„ ์ฃผ์—ˆ๋‹ค. ์ฃผ์˜ํ•  ์ ์€, ๋งˆ์ง€๋ง‰ ์‚ฌ๊ฐํ˜•์—์„œ bottom๊ฐ’์„ ๋ช…์‹œํ•ด์•ผ ์Šคํฌ๋กค์ด ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค...!

class ViewController: UIViewController {
    override func viewDidLoad() {
        ...
        scrollView.addSubview(firstView)
        scrollView.addSubview(secondView)
        
        firstView.snp.makeConstraints {
            $0.top.left.equalToSuperview()
            $0.width.height.equalTo(100)
        }
        secondView.snp.makeConstraints {
            $0.top.equalToSuperview().inset(1000)
            $0.left.equalToSuperview()
            $0.width.height.equalTo(100)
        }
        thirdView.snp.makeConstraints {
            $0.top.equalToSuperview().inset(1000)
            $0.left.equalToSuperview()
            $0.bottom.equalToSuperview()
            $0.width.height.equalTo(100)
        }
    }
}

์ „์ฒด ์ฝ”๋“œ

import SnapKit
import UIKit

class ViewController: UIViewController {
    let scrollView: UIScrollView = {
        let scrollView = UIScrollView()
        scrollView.backgroundColor = .systemGray
        return scrollView
    }()
    let firstView: UIView = {
        let view = UIView()
        view.backgroundColor = .black
        return view
    }()
    let secondView: UIView = {
        let view = UIView()
        view.backgroundColor = .black
        return view
    }()
    let thirdView: UIView = {
        let view = UIView()
        view.backgroundColor = .black
        return view
    }()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .yellow

        view.addSubview(scrollView)
        scrollView.addSubview(firstView)
        scrollView.addSubview(secondView)
        scrollView.addSubview(thirdView)
        
        scrollView.snp.makeConstraints {
            $0.top.bottom.equalToSuperview()
            $0.left.right.equalToSuperview().inset(16)
        }
        firstView.snp.makeConstraints {
            $0.top.left.equalToSuperview()
            $0.width.height.equalTo(100)
        }
        secondView.snp.makeConstraints {
            $0.top.equalToSuperview().inset(1000)
            $0.left.equalToSuperview()
            $0.width.height.equalTo(100)
        }
        thirdView.snp.makeConstraints {
            $0.top.equalToSuperview().inset(2000)
            $0.left.equalToSuperview()
            $0.bottom.equalToSuperview()
            $0.width.height.equalTo(100)
        }
    }
}
profile
๐Ÿ‘ฉโ€๐Ÿ’ป

0๊ฐœ์˜ ๋Œ“๊ธ€