스토리보드가 아직 훨씬 익숙하지만, 협업과 취업을 위해서라면 코드베이스 프로젝트에 익숙해져야만 한다.
코드로 UI를 작성할 때 제약조건 거는 것이 매우 귀찮고 코드가 긴데, 써드파티 라이브러리인 SnapKit
을 사용하면 이 과정이 매우 편해진다고 한다.
그런고로 오늘은 미래의 나를 위한 노스토리보드 환경 구축 방법 (할때마다 찾아보니까 귀찮다), 스냅킷에 대한 간단한 설명을 작성해보려고 한다.
평소처럼 iOS -> App 선택
평소처럼 이름 적고 Storyboard 로 선택하여 생성
Main.storyboard
삭제 (Move To Trash)
info.plist
에서 main 검색, 나오는 행 삭제
좌측 네비게이터 -> 프로젝트 아이콘 클릭
-> 타겟 -> Build Settings -> main 검색하여 나오는 행 삭제
Scenedelegate에 다음의 코드 작성
var window: UIWindow?
// 윈도우. 앱에 반드시 한 개는 필요한 가장 근본이 되는 뷰. 이 위에 뷰가 쌓이기 시작.
// 앱을 시작할때 세팅해줄 코드를 작성하는 곳.
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
// UIWindow 객체 생성.
guard let windowScene = (scene as? UIWindowScene) else { return }
let window = UIWindow(windowScene: windowScene)
// window 에게 루트 뷰 지정.
window.rootViewController = CalculatorViewController()
// 이 메서드를 반드시 작성해줘야 윈도우가 활성화 됨.
window.makeKeyAndVisible()
self.window = window
}
이렇게하면 노스토리보드 환경 구축이 완료된다.
SPM(Swift Package Manager)은 Swift 프로젝트를 위한 도구로, 패키지를 관리하고 의존성을 처리해준다. Cocoapods, Cartage 등과 같은 서드파티 툴이 아닌 공식적으로 지원하는 퍼스트파티 툴로, Xcode 11부터 추가되었다고 한다.
의존성이 뭔 말인지 몰라서 한번 정의하고 넘어가기
:필요로 한다는 의미 - 소프트웨어 개발에서 어떤 코드나 프로그램이 다른 코드나 프로그램을 필요로 하는 경우로, 쉽게 말해 프로젝트가 제대로 동작하기 위해 필요한 외부 라이브러리나 프레임워크를 의미한다.
나중에 읽으려고 가져온 KakaoTech 스냅킷 관련 아티클
이렇게 깊게 공부해야 되는구나...... 저걸 완전히 이해하는 날까지 파이팅
뼐참고
의존성 역전 원칙(Dependency Inversion Principle)의 의존성도 같은 개념이다
SPM의 의존성 - 프로젝트가 외부 라이브러리나 패키지를 필요로 하는 것
DIP의 의존성 - 클래스나 모듈이 다른 클래스나 모듈을 필요로 하는 것
Targets -> General -> Frameworks, Libraries, and Embedded Content에서 밑의 + 표시를 누르면 (사진엔 이미 적용되어 있음)
이런게 나온다. Add Package Dependency 클릭 후
주소창에 스냅킷 링크를 검색해주면 나옴.
❗️❗️여기서 주의❗️❗️
두개의 패키지가 나오는데,
SnapKit는 내 프로젝트를 가리키게 해 주고
위의 이 Dynamic은 None으로 설정
같은 과제를 한 여러명의 사람들이 이거 설정 안하면 오류난다고 한다.
왜인지는 모름
알게되면 추가 수정하러 오겠음