bannaviiOS) wkwebView로딩속도가 너무 느릴때..(feat. 초기화면 설정)

2022. 11. 30. 16:21iOS/iOS

728x90
반응형

wkwebView 로딩 속도가 너무 느렸던 이슈가 있었다.

개선 방법을 찾아보니, stackoverflow에서 WKWebView 기본적으로 JS JIT 렌더링을 사용하지 않기 때문에 로딩 속도가 느린것이라고 했다. 아래의 코드를 추가하면 wkwebView로드 속도가 더 빨라질것이라고 했는데..

webConfiguration.suppressesIncrementalRendering = true

별 차도는 없었다.

 

그래서 현재 프로젝트 코드 구성을 살펴보는데,  launchscreen화면이 너무 빨리 사라지는 이슈가 있어서 appdelegate.swift파일의

didFinishLaunchingWithOptions 함수 내부에 아래의 코드를 넣어주었었다.

Thread.sleep(forTimeInterval: 2.0)

 

즉, 메인스토리보드에 연결된 init view를 열때, 쓰레드로 메인 뷰를 열 시간을 지연시켰던 것인데 왠지 이것 때문에

웹뷰화면이 느리게 뜬것일수도 있다는 생각이 들었다.

 

그래서 사용했던 launchscreen을 사용하지 않고, 위의 Thread.sleep도 주석처리를 하고, Main 스토리보드만을 이용해서 splash뷰를 구현하기로 했다.

간단히 미리 설명하자면, 앱이 실행될때 launch screen file을 Main.storyboard로 수정하여, 앱이 실행되면 launch screen이 아니라 Main.storyboard를 띄우도록 하고, 뷰컨 위에 launch screen역할을 대신할, UIVIew를 add하여 2초 후에 뷰를 사라지게하면..

야매같지만 해볼법할것 같았고, 실제로도 유의미했다.(이런식으로 구현은 많이 안하겠지만.... 더 좋은 방법이 있다면 댓글을 부탁드립니다)

 

 

1) launch screen file을 main으로 바꾸고

2) 웹뷰에 splashView를 add해주고(constraints 설정 필요)

self.webView.addSubview(splashView)

 

3) 2초후에 webView에 add했던 splash view를 사라지게 하기

DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 2) {

            UIView.animate(

                withDuration: 1.0,

                animations: {

                    self.splashView.alpha = 0.0

                }) { finished in

                    self.splashView.isHidden = true

                }

}
728x90
반응형