Swift에서 UIScrollView 안에 UIView를 넣는 방법

조회수 4322회

스토리보드에서 메인 뷰 안에 스크롤 뷰를 넣어 놓고, 그 안에 동적으로 생성한 UIView를 넣으려고 하는데요, 뭔가 잘못 되었는지 뷰가 보이지 않습니다.

class MainViewController: UIViewController {
    @IBOutlet weak var scrollView: UIScrollView!

    override func viewDidLoad() {
        super.viewDidLoad()

        let view = UIView()
        view.backgroundColor = UIColor.red

        view.widthAnchor.constraint(equalToConstant: 100).isActive = true
        view.heightAnchor.constraint(equalToConstant: 150).isActive = true

        scrollView.addSubview(view)
    }

}

어디가 문제일까요?

view.topAnchor.constraint(equalTo: scrollView.topAnchor).isActive = true

같은 코드를 넣으면 "Unable to activate constraint with anchors" 라는 에러가 나면서 죽어버립니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자

2 답변

  • 스택오버플로우에서 찾아서 해결했습니다.

    class MainViewController: UIViewController {
        @IBOutlet weak var scrollView: UIScrollView!
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            let view = UIView()
            view.backgroundColor = UIColor.red
    
            view.widthAnchor.constraint(equalToConstant: 100).isActive = true
            view.heightAnchor.constraint(equalToConstant: 150).isActive = true
    
            view.translatesAutoresizingMaskIntoConstraints = false
            scrollView.addSubview(view)
            view.leftAnchor.constraint(equalTo: scrollView.leftAnchor).isActive = true
            view.topAnchor.constraint(eqaulTo: scrollView.topAnchor).isActive = true
        }
    
    }
    

    translatesAutoresizingMaskIntoConstraints를 주고, subview를 먼저 추가 한 다음에, constraint를 주면 되네요.

    참고) 링크 이름

    • (•́ ✖ •̀)
      알 수 없는 사용자
  • Anchor 는 안 써봤지만....

    scrollView의 contentSize를 지정해 보세요~

    https://developer.apple.com/reference/uikit/uiscrollview

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)