반응형
LinkedIn
개발자로 성장하면서 남긴 발자취들을 확인하실 수 있습니다.
Github
WWDC Student Challenge 및 Cherish, Tiramisul 등 개발한 앱들의 코드를 확인하실 수 있습니다.
개인 앱 : Cherish
내 마음을 들여다보는 시간, 체리시는 디자이너와 PM과 함께 진행 중인 1인 개발 프로젝트입니다.
10년 후, 20년 후 나는 어떤 스토리 텔러가 되어 있을지 궁금하다. 내가 만약에 아직 조금 더 탐구하고 싶은 게 있고, 궁금한 게 있다면, 그게 설사 지금 당장의 내 인생에 도움이 안 되는 것 같더라도 경험해보자. 그 경험들을 온전히 즐기며 내 것으로 만들고, 내 일에 녹여내고... 그러다보면 그 점들이 모여 나란 사람을 그려내는 선이 될 테니까.
Recent Posts
Recent Comments
- Total
꿈꾸는리버리
SwiftUI launchScreen(splash Image) 만들기 ( delay가 가능한.. ) 본문
반응형
launchScreen vs splash Image
launchScreen이란 앱의 메인 화면이 나오기 전 로딩 시간에 보여주는 화면이다.
launchScreen)
앱의 로딩시간이 길어 사용자에게 해당 앱이 열리고 있음을 알려주는 시그널
splash Image)
앱 브랜딩을 위해 launching 시간보다 더 오래 .. launchScreen화면을 띄우는 것
-> 애플은 splash Image가 해당 앱이 느리다는 것을 밝히는 일이기 때문에 만드는 것을 지양해야 한다고 하지만, 대부분의 앱의 경우에는 앱 브랜딩을 위해 splash Image가 존재한다. 다만 애니메이션이나 긴 시간의 splash Image가 아니라 1-2초 사이에서 빨리 사라지는 splash Image가 대부분이다.
1️⃣ launch Screen 만들기
1) command + N을 눌러 새로운 launch Screen을 만든다. (이름은 Launch Screen으로 했다)
2) 해당 런치스크린을 꾸민다. (UIKit으로 되어 있기 때문에 어느정도 이해가 필요하다.)
+) UIKit을 모르는 사람을 위해... 짧막한 그림 설명
3) TarGets -> General -> Launch Screen File을 Launch Screen으로 지정해준다.
이렇게 하고 나면 launchScreen은 끗 !
근데.. 너무 빨리 지나가 버려서 아쉬웠다..
2️⃣ launch Screen을 좀 더 오랜시간 보여주기 위해 다음과 같은 코드를 추가했다.
import SwiftUI
// 추가
class AppDelegate: NSObject, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil) -> Bool {
// 원하는 시간만큼 sleep 시키기( 초 단위 )
Thread.sleep(forTimeInterval: 1)
return true
}
}
@main
struct CampairApp: App {
// 추가
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
var body: some Scene {
WindowGroup {
TabbarView()
}
}
}
하지만 위와 같은 방법은 Thread를 sleep 시키면 아무 작업도 일어나지 않기 때문에 비효율적인 코드이다.
그래서 다른 방법을 고민하던 중 다음과 같은 코드를 짰다.
@main
struct CampairApp: App {
@State var isSplashView = true
var body: some Scene {
WindowGroup {
if isSplashView {
LaunchScreenView()
.ignoresSafeArea()
.onAppear {
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 1) {
isSplashView = false
}
}
} else {
TabbarView()
}
}
}
}
struct LaunchScreenView: UIViewControllerRepresentable {
func makeUIViewController(context: Context) -> some UIViewController {
let controller = UIStoryboard(name: "Launch Screen", bundle: nil).instantiateInitialViewController()!
return controller
}
func updateUIViewController(_ uiViewController: UIViewControllerType, context: Context) {
}
}
이제 시간이 늘어난 것을 확인할 수 있다 ( 확연한 차이를 보기 위해 4초로 설정해뒀다. )
반응형
'오뚝이 개발자 > SwiftUI' 카테고리의 다른 글
SwiftUI Widget 딱대.. (2/3) : 앱 내의 데이터를 widget에 띄우기 (0) | 2022.08.07 |
---|---|
SwiftUI Widget 딱대.. (1/3) 위젯 기본 개념 + 구현 (0) | 2022.08.06 |
SwiftUI : StateObject 실험실 (2) | 2022.06.02 |
SwiftUI : ViewModifier (0) | 2022.06.01 |
SwiftUI : ExtractsubView (0) | 2022.06.01 |
Comments