토이 프로젝트 하면서 알게된 점
iOS
Storyboard Reference
세 명이서 작업을 했고, 처음에는 스토리보드를 안 쓰고 전부 코드로 작성하기로 했는데, 중간에 스토리보드도 쓰게 되었다. 쓸 사람은 쓰고, 안 쓸 사람은 안 쓰는 상황이 되었다. 서로의 스토리보드를 건드리지 않기 위해서 어떤 식으로 나누었냐면,
- 기능별 그룹을 만든다.
- 각 기능별 스토리보드를 만든다.
- 기능별 스토리보드를
main.storyboard
에서 Storyboard Reference를 사용해서 연결한다.
+ 탭 바와 네비게이션 컨트롤러 둘 다 사용했음
main.storyboard
에 한 번 모든 기능의 흐름을 연결해놓으니까 보기에도 좋고, 스토리보드 충돌 날 일도 없어서 좋았다.
코드로 스크롤뷰 만들기
같이 프로젝트를 진행한 택현님이 알려주신 유튜브 동영상이 엄청 도움이 많이 되었다.
class ViewController: UIViewController {
// MARK:- Properties
lazy var contentViewSize = CGSize(width: self.view.frame.width, height: self.view.frame.height)
// MARK:- Views
lazy var scrollView: UIScrollView = {
let view = UIScrollView(frame: .zero)
view.bacgkroundColor = .white
view.frame = self.view.bounds
view.contentSize = contentViewSize
return view
}()
lazy var containerView: UIView = {
let view = UIView()
view.backgroundColor = .white
view.frame.size = contentViewSize
return view
}()
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white
view.addSubview(scrollView)
scrollView.addSubview(containerView)
// containerView.addSubView(component)
}
}
스토리보드에서 생성한 Navigation Controller 제약조건 주는 방법
- 스토리보드에서
Navigation Controller
를 만든다. - 나머지 View는 코드로 작성한다.
이러한 상황에서 어떤 view
를 네비게이션 컨트롤러로부터 8만큼 떨어지게 하려면 다음과 같이 작성하면 된다. (SnapKit 사용)
view.snp.makeConstraint {
$0.top.equalTo(self.view.safeAreaLayoutGuide.snp.top).offset(8)
테이블뷰 셀 사이의 선 지우기
코드로 작성된 테이블뷰 셀 사이의 선을 지우고 싶다면, tableView.separatorStyle = .none
을 쓰면 된다. 이때 주의해야 할 점은, 초기 생성 시에 작성하면 안 된다는 것이다.
🚫 Bad
let tableView = UITableView().then {
$0.separatorStyle = .none
}
👍 Correct
let tableView = UITableView().then {
// set tableView
}
override func viewDidLoad() {
super.viewDidLoad()
tableView.separatorStyle = .none
}