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


스토리보드에서 메인 뷰 안에 스크롤 뷰를 넣어 놓고, 그 안에 동적으로 생성한 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" 라는 에러가 나면서 죽어버립니다.

  • 2016년 10월 17일에 작성됨
    Node.js based full stack web developer. Studying scala language.

조회수 117


2 답변


좋아요
1
싫어요
채택취소하기

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

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를 주면 되네요.

참고) 링크 이름

  • 2016년 10월 18일에 작성됨
    Node.js based full stack web developer. Studying scala language.


Anchor 는 안 써봤지만....

scrollView의 contentSize를 지정해 보세요~

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

  • 2016년 10월 18일에 작성됨

  • contentSize를 지정해도 여전히 안 나타납니다...    JinWoo Lee   2016.10.18 10:46     

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close