안녕하세요! 이전 글에 이어서 사용한 코드들을 하나씩 정리하고 있습니다.
오늘은 SFSafariViewController를 통해 새로운 웹 뷰 화면을 띄우는 방법을 적용시킨 코드를 정리해보겠습니다.
첫번째 그림은 제 <뭐 먹지? 태그로 관리하는 맛집 & 룰렛 > 앱에서 맛집을 저장하거나 수정하는 페이지 입니다.
저기서 URL을 누르면 두번째 그림처럼 URL에 해당하는 웹뷰를 띄우게 됩니다.
아래 제가 작성한 코드를 보시면 아시겠지만 구현은 엄청 간단합니다.
먼저 SafariServices를 임포트 하고
해당 url을 파라미터로 넣은 SFSafariViewController 타입의
safariViewController를 선언해줍니다.
그리고 해당 safariViewController를 present로 화면을 띄우면 끝입니다.
import SafariServices
func goWebPage(url: String, fromVC: UIViewController) {
if url != "등록된 정보가 없습니다" {
guard let url = URL(string: url) else { return }
let safariViewController = SFSafariViewController(url: url)
safariViewController.modalPresentationStyle = .automatic
fromVC.present(safariViewController, animated: true)
}
}
제가 처음에 사용한 코드는 아래와 같이 조금 달랐습니다.
아래 코드로는 import SafariServices를 하지 않고 바로 화면을 띄울 수 있습니다.
@objc func buttonTapped(_ url: String) {
if let url = URL(string: url) {
UIApplication.shared.open(url, options: [:])
}
}
다음 그림은 위에 코드로 화면을 이동한 모습입니다.
이전의 코드와 달리 완전히 사파리 앱이 켜져서 해당 URL로 이동하는 방식으로 작동합니다.
저는 제 앱에서 사용자가 식당의 정보를 간단하게 둘러보고 아래로 쓱 내려서 창을 끌 수 있으면 좋겠다고 생각했습니다
하지만 이 방식으로는 네비게이션 바의 작은 버튼을 눌러서 돌아가거나 홈 화면으로 돌아가면서 앱을 다시 켜줘야해서 번거로울거 같아
처음에 소개한 코드를 채택했습니다.
그리고 SFSafariViewController가 비교적 더 최근에 나온 방식이고 웹 뷰를 따로 설정하지 않고도 간단하게 창을 띄울 수 있어
일반적으로 더 추천받는 방법이기도 합니다.
++ 누적해서 정리한 내용은 깃허브에 올리고 있습니다. 링크