switch CLLocationManager.authorizationStatus() {
case .authorizedAlways, .authorizedWhenInUse:
mainMapViewModel.switchUserLocation()
case .notDetermined, .restricted, .denied:
showingAlert.toggle()
@unknown default:
mainMapViewModel.switchUserLocation()
}
....
.moahAlert(isPresented: $showingAlert, moahAlert: {
MoahAlertView(message: "현재 위치를 찾을 수 없어요. 위치서비스를 켜 주세요.",
firstBtn: MoahAlertButtonView(type: .CANCEL, isPresented: $showingAlert, action: {}),
secondBtn: MoahAlertButtonView(type: .SETTING, isPresented: $showingAlert, action: {
UIApplication.shared.open(URL(string: UIApplication.openSettingsURLString)!)
}))
})
현 위치 버튼에 switch문을 사용하여 overlay를 띄우는 방식입니다.
postView 진입 시 내 위치정보를 불러올 수 없다면 경고창을 띄웁니다. 내 위치 정보를 불러올 수 있을때 까지 PostView에 진입을 할 수 없습니다.
가능하다면 추가해주세요
변경 사항 스크린샷 혹은 화면 녹화
기타 언급해야 할 사항들
일단 내 위치 정보를 불러올수있을때 까지 PostView에 진입을 할 수 없게 해놨는데 이 방법이 좋은건지는 잘 모르겠습니다. 논의가 필요합니다.
[overlay 변경 관련]
overlay로 변경한 이유는 fullscreencover의 modal 애니메이션 때문입니다. 먼저 fullScreenCover를 Alert로 사용하기 위해서는 background의 투명도를 조정 해야하는데, swiftui 자체 기능엔 없어 UIViewRepresentable을 사용해야합니다. 추가로 애니메이션을 없애기 위해서 고려해야 하는 점들도 있습니다.
overlay를 이용하면 이 문제들에서 바로 벗어날수있는데, 정확히는 위에서 서술한 fullScreenCover로만 구현할때 돌아가는 로직을 제가 정확히 이해하지 못했기에 다른 뷰들에서 사용할때 이슈가 발생하면 바로바로 해결이 어려울수도 있기에 변경했습니다. LoadingVIew와 overlay가 겹치면서 문제가 생기지 않는다면 이쪽이 보기에도, 작성하기에도 훨씬 용이한 장점도 있습니다. 이전 코드들은 주석처리를 해놨기에 overlay에 문제가 생긴다면 얼마든지 다시 변경할 수 있습니다.
PR 가이드라인
PR Checklist
PR 날릴 때 체크 리스트
PR Type
어떤 종류의 PR인가요?
연관되는 issue 정보를 알려주세요
Issue Number: #102
PR 설명하기
이 PR에 대해 간략하게 소개해주세요!
어떻게 작동하나요? code 기반으로 설명해주세요
가능하다면 추가해주세요
변경 사항 스크린샷 혹은 화면 녹화
기타 언급해야 할 사항들
[overlay 변경 관련]
overlay로 변경한 이유는 fullscreencover의 modal 애니메이션 때문입니다. 먼저 fullScreenCover를 Alert로 사용하기 위해서는 background의 투명도를 조정 해야하는데, swiftui 자체 기능엔 없어 UIViewRepresentable을 사용해야합니다. 추가로 애니메이션을 없애기 위해서 고려해야 하는 점들도 있습니다.
overlay를 이용하면 이 문제들에서 바로 벗어날수있는데, 정확히는 위에서 서술한 fullScreenCover로만 구현할때 돌아가는 로직을 제가 정확히 이해하지 못했기에 다른 뷰들에서 사용할때 이슈가 발생하면 바로바로 해결이 어려울수도 있기에 변경했습니다. LoadingVIew와 overlay가 겹치면서 문제가 생기지 않는다면 이쪽이 보기에도, 작성하기에도 훨씬 용이한 장점도 있습니다. 이전 코드들은 주석처리를 해놨기에 overlay에 문제가 생긴다면 얼마든지 다시 변경할 수 있습니다.