Old_SWIFT(221012)/기술이야기

스토리보드 없이 코드로 UI구현하기

KataRN 2022. 9. 6. 23:24
반응형

안녕하세요. KataRN입니다.

 

요즘 참여중이 공모전에 제출할 앱이 얼추 마무리가 되어서... 오랜만에 글을 쓰게되었네요...

 

기능구현을 실험하다싶이 이것저것 많이 시도했더니 쓸내용도 많아서 또 미루고 미루고....

그래도 용기내서 다시 글을 작성해봅니다...

 

우선 제가 해본것중에 가장 만족스러웠던 스토리보드 없이 코드로만 구현하기입니다.

 

스토리보드로 구현할 경우 장점이 명확했습니다.

 

1. 빌드가 빨라요.

2. 아카이브도 빨라요.

3. 다른사람이 보기에 의외로 가독성이 좋아요.(?????)

 

저는 사실 스토리보드의 장점은 가독성이라 생각했었습니다. 그런데 의외로 다른사람이 봤을때 가독성이 훨씬 좋다는 이야기를 들었습니다.

아 물론 제가 스토리보드없이 만들면서 코드 스타일이 많이 바뀐점도 있기 때문에 3번은 아닐수도있습니다;;

 

본론으로 들어가겠습니다.

 

스토리보드 없이 만들기위해서 스토리보드를 삭제합시다.

 

 

이렇게 지우고나면 빌드가 안되는데요.

 

Info.plist에 가봅시다~

 

여기가면 스토리보드가 Main이라고 되어있는데 이것도 삭제~

 

그리고 빌드가 되시나요? 안되시면 여기도 삭제~

 

이제 빌드는 됩니다, 다만 검은화면이 뜹니다.

메인화면을 설정안해줘서 그렇습니다.

아래와 같이 해보세요~

 

1. 바로 화면을 띄울 경우

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

 

2. 네비게이션바를 통해 띄울 경우

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

 

이래도 검은화면입니다.

 

ViewController()의 viewDidLoad() 함수 안에 배경색을 넣어주세요.

view.backgroundColor = .white

 

그러면 흰색화면이 생깁니다.

 

오늘도 긴글 읽어주셔서 감사합니다.

다시 꾸준히 올리도록하겠습니다.

반응형