clamp
Clamp
clamp
글쓰기 관리
전체 방문자
오늘
어제
  • 분류 전체보기 (509)
    • IOS (85)
    • SwiftUI+TCA+Combine (9)
    • RxSwift + MVVM (56)
    • Clean Architecture (12)
    • SWIFT (56)
    • iOS - TDD (2)
    • 디자인패턴 (4)
    • CS (56)
      • 알고리즘 (29)
      • 운영체제 (15)
      • 자료구조 (2)
      • 네트워킹 (4)
      • 기타 (6)
    • 회고 (0)
    • Firebase (18)
    • SwiftUI (10)
    • iOS - UIKit (11)
    • iOS - 오픈소스 (6)
    • 코딩테스트 (166)
      • 프로그래머스 (164)
    • 정보처리기사 (14)
    • GitHub (2)
글쓰기 / 관리자

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • uikit
  • ㅅ
  • Q
  • Swift

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
clamp

Clamp

[iOS] - Storyboard 없이 프로젝트 생성하기
IOS

[iOS] - Storyboard 없이 프로젝트 생성하기

2023. 3. 26. 14:59

개발자로써 Storyboard없이 UI를 구성할 줄 알아야 한다고 느낀 후 코드로 UI를 작성하는 연습을 하고있다.

 

그래서 Storyboard 없이 프로젝트를 생성하는 방법에 대해 기록하려고 한다.

 

1. 프로젝트 생성

 

2. Main.storyboard 삭제

스토리보드를 삭제❌❌❌한다.

에러가 발생한다  Main스토리보드를 찾을 수 없으니까..

 

3. info.plist 수정

 

1. Storyboard Name을 삭제한다.

2. Main storyboard file base name을 찾아 삭제한다.

 

⭐️⭐️⭐️ 커맨드(command) + S 프로젝트 저장!!

 

4. 초기 ViewController(Root)을 지정한다.  파일명: SceneDelegate.swift

 

class SceneDelegate: UIResponder, UIWindowSceneDelegate {

    var window: UIWindow?


    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        
        guard let windowScence = (scene as? UIWindowScene) else { return }
        window = UIWindow(frame: windowScence.coordinateSpace.bounds)
        window?.rootViewController = UINavigationController(rootViewController: ViewController())
        window?.makeKeyAndVisible()
        window?.windowScene = windowScence
    }

 

5. ViewController의 배경 색상을 지정해서 잘 나오는지 확인해야한다.

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        view.backgroundColor = .systemPink
    }

}

⭐️ 추가

스토리보드 없이 작업을 하다보면 뷰를 컨트롤러에서 분리시킬 수 있다.

그렇게 되면 컨트롤러의 상속받은 뷰를 커스텀한 뷰로 교체시켜야 하는데 이는 loadView()에서 할 수 있다.

 

또한 loadView()에서 다음과 같은 작업이 이뤄진다.

// ViewController.swift

	let customView: CustomView()

    override func loadView(){
        super.loadView() // ❌ 재정의해서 뷰를 교체할 경우 상위 호출을 하면 안된다
        view = customView
    }
    
    ...

 

 

저작자표시 비영리 동일조건 (새창열림)
    'IOS' 카테고리의 다른 글
    • [iOS] - 파일시스템(Document, Library, tmp...)
    • [iOS] - 앱의 생명주기 App's Life Cycle (AppDelegate, SceneDelegate)
    • [iOS] 화면이동과 데이터전달.
    • iOS - 애니메이션효과
    clamp
    clamp
    주니어 iOS개발자의 발악!!!!!!!

    티스토리툴바