-
Storyboard없이 Code로 UI구현하기iOS/UIKit 2021. 12. 28. 23:39
모든 UI를 Code만으로 작성하기 위해서, Main Storyboard를 없애줄 것입니다.
⁉️ Tip
시작하기 전에 간단한 팁을 하나 드리자면, 어떤 기능을 Storyboard에서가 아닌 Code로 구현하고 싶을 때
구글에programmatically
라는 키워드를 통해 검색하면 조금 더 유용한 정보를 얻을 수 있습니다!총 3단계를 거치게 됩니다.
첫 번째, Storyboard를 제거해줍니다.
Storyboard를 모두 제거한다고, LaunchScreen까지 제거하면 안 됩니다..
LaunchScreen을 코드로 작성해도 되나? 의 대답은 NO라고 하네요두 번째, Target의 Main Inferface를 지우고, Info.plist의 Storayboard Name을 삭제해줍니다.
Main Interface를 삭제
Info.plist의 Storyboard Name을 삭제
이렇게 하면, App을 실행했을 때 프로그램은 우리에게 보여줄게 하나도 없어집니다.
아무것도 없는 화면
때문에 처음에 무엇을 보여줄지 알려주어야 하는데, 그것은 SceneDelegate에서 담당합니다.
세 번째, 보여줄 ViewController을 지정해줍니다.
결론적으로 아래와 같은 코드를 작성해줄 것입니다.
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { guard let windowScene = (scene as? UIWindowScene) else { return } window = UIWindow(windowScene: windowScene) let vc = ViewController() //만약 navigationController기능을 추가하고 싶다면 아래 코드를 사용하면 됩니다. //let nav = UINavigationController(rootViewController: vc) window?.rootViewController = vc window?.makeKeyAndVisible() }
간단한 코드 설명
위 함수에 대한 설명은 scene(_:willConnectTo:options:)에서 자세히 볼 수 있습니다.
해당 method는 앱에 새로운 scene이 추가됐을 때 실행됩니다. (아이패드와 같은 경우에서, 멀티윈도우(?)가 추가됐을 때도 이 method가 실행)
그 안에서 window라는 보이지는 않지만, 외부와 뷰를 연결해주는 역할을 하는 객체를 통해서 ViewController를 보여주게 됩니다.
rootViewController로 보여주고 싶은 ViewController을 할당해주고,
makeKeyAndVisible()
을 통해서 KeyWindow로 설정해준 뒤 보여줍니다.여담이지만 확실히, App의 기본구성성분을 공부할 필요가 있는 것 같습니다.
여러 가지 객체의 LifeCycle부터 용도까지 천천히 공부해봐야겠습니다.
아무튼, 이렇게 하면 ViewController()가 초기 화면으로 보여지게 됩니다.
'iOS > UIKit' 카테고리의 다른 글
UIButton.Configuration으로 리펙토링 아이디어 (0) 2022.01.14 [UIKit] TableViewCell 내부의 button이 작동하지 않을 때 (0) 2022.01.13 [UIKit] ScrollView 안에 TableView 넣기 (1) 2022.01.05 UIKit과 DispatchQueue.main의 관계 / 실제 예시를 통해 알아보기 (0) 2021.12.26 [UIKit] UIButton의 Image, Title 크기 조절하기 (0) 2021.12.16