Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 면접을 위한 CS전공 지식 노트
- CarouselCollectionview
- TableView Section
- 롤케이크 자르기
- NavigationSearchBar
- Reference Cycle
- tableview section별 다른 cell적용
- CoreData
- Value Type Reference Type
- 테이블뷰 나누기
- SWIFT
- 자료구조
- retain cycle
- wil
- Array vs Linked List
- Carousel CollectionView
- coremotion
- TableView
- 프로그래머스
- @escaping
- ReferceCycle
- class struct
- Input Output
- 강한 참조 순환
- UIKit
- til
- firebase
- UserDefaults
- 면접을 위한 CS 전공 지식 노트 Tree
- 양궁대회
Archives
- Today
- Total
개발하는 동글 :]
[TIL],[UIKit],[코드로 유동적인 높이를 가진 Scrollview 만들기] 본문
1. ScrollView 만들기
private let contentScrollView = UIScrollView()
1. 먼저 ScrollView 컴포넌트를 생성해 준다.
private func setUpContentScrollView(){
view.addSubview(contentScrollView)
contentScrollView.snp.makeConstraints{ make in
make.edges.equalTo(view.safeAreaLayoutGuide)
}
}
2. 뷰에 addSubView를 해준 다음 스크롤 뷰의 상, 하, 좌, 우 제약을 잡아준다.
2. ContentView 만들기
private let contentView = UIView()
1. ContentView를 UIView로 생성해 준다.
private func setUpContentView(){
contentScrollView.addSubview(contentView)
contentView.backgroundColor = .yellow
contentView.snp.makeConstraints{ make in
make.edges.equalToSuperview()
make.width.equalTo(contentScrollView.snp.width)
}
}
2. ScrollView에 addSubVIew를 해준다
3. 세로 스크롤을 할 것이기에 ContentView의 제약을 상.하,좌,우 제약을 잡아준 뒤 넓이를 scrollView와 동일하게 설정해 준다.
-가로 스크롤을 원할 시 높이를 scrollView와 동일하게 설정해 준다.
3. ContentVIew에 컴포넌트 추가하기
private let titleLabel = UILabel()
private let infoLabel = UILabel()
private let imageView = UIImageView()
private let contentLabel = UILabel()
1. 사용할 컴포넌트들을 생성해 준다.
private func setUpTitleLabel(){
contentView.addSubview(titleLabel)
titleLabel.text = "titleLabel"
titleLabel.font = UIFont.boldSystemFont(ofSize: 32)
titleLabel.numberOfLines = 0
titleLabel.backgroundColor = .white
titleLabel.snp.makeConstraints{ make in
make.top.equalToSuperview()
make.left.equalToSuperview().offset(CGFloat.defaultPadding)
make.right.equalToSuperview().offset(-CGFloat.defaultPadding)
}
}
private func setUpInfoLabel(){
contentView.addSubview(infoLabel)
infoLabel.textColor = .systemGray
infoLabel.text = "info Label"
infoLabel.font = UIFont.systemFont(ofSize: 16)
infoLabel.textAlignment = .right
infoLabel.backgroundColor = .white
infoLabel.snp.makeConstraints{ make in
make.top.equalTo(titleLabel.snp.bottom).offset(CGFloat.defaultPadding)
make.left.equalToSuperview().offset(CGFloat.defaultPadding)
make.right.equalToSuperview().offset(-CGFloat.defaultPadding)
}
}
private func setUpImageView(){
contentView.addSubview(imageView)
imageView.backgroundColor = .white
imageView.snp.makeConstraints{ make in
make.top.equalTo(infoLabel.snp.bottom).offset(CGFloat.defaultPadding)
make.centerX.equalToSuperview()
make.left.equalToSuperview().offset(CGFloat.defaultPadding)
make.right.equalToSuperview().offset(-CGFloat.defaultPadding)
make.height.equalTo(240)
}
}
private func setUpContentLabel(){
contentView.addSubview(contentLabel)
contentLabel.numberOfLines = 0
contentLabel.backgroundColor = .white
contentLabel.text = "contentLabel"
contentLabel.snp.makeConstraints{ make in
make.top.equalTo(imageView.snp.bottom).offset(1000)
make.left.equalToSuperview().offset(CGFloat.defaultPadding)
make.right.equalToSuperview().offset(-CGFloat.defaultPadding)
make.bottom.equalToSuperview() // 하단의 제약을 상위뷰와 동일하게 잡아준다.
}
}
2. 컴포넌트들의 제약을 잡아주고 최하단에 위치할 컴포넌트의 하단의 제약은 상위뷰의 하단에 제약을 맞춰 준다.
4. 실행화면