Notice
Recent Posts
Recent Comments
Link
관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] 모달 화면 전환 overCurrentContext vs currentContext, fullScreen vs overFullScreen 본문

iOS 응용 (swift)

[iOS - swift] 모달 화면 전환 overCurrentContext vs currentContext, fullScreen vs overFullScreen

jake-kim 2024. 1. 4. 01:25

over가 붙은 것과 붙지 않은 것의 차이

  • over가 붙은 것은 띄우는 VC의 view들을 날리지 않고 바로 띄우는 것이고, over가 붙지 않으면 띄우는 VC의 뷰들을 날림
  • 파란색 VC를 fullScreen로 띄운 경우
    • 이전에 있던 UIView들을 날림 (아래 사진에서 두 개의 UITransitionView가 있을 때, 첫 번째 UITransitionView의 UIDropShadowView의 View들이 날아감)

  • 파란색 VC를 overFullScreen으로 띄운 경우
    • 파란색 VC앞에 있던 뷰들이 사라지지 않고 유지되어 있음

  • -over를 붙이면 앞전의 view들이 사라있고, -over를 붙이지 않으면 view들이 사라짐
    • -> 띄울 VC에서 viewWillAppear 프린트를 찍을때, 파란색 VC를 dismiss 한 경우 -over로 띄웠을때는 이미 view가 있어서 viewWillAppear가 호출되지 않음

접근성 관점

  • 만약 띄우는 VC에 UITextField같은 것이 있고 여기에 포커싱 되어 있는 상태에서 새로운 VC를 over로 띄우면 새로운 VC에 포커싱이 안가는 이슈가 존재
  • 만약 앞전의 뷰들이 보여지게 하고싶다면 .pageSheet를 사용할 것

currentContext vs fullScreen

  • currentContext: 띄우는 VC의 view 크기에 맞게 새로운 VC를 present하는 것
  • fullScreen: 무조건 디바이스 크기만큼의 VC를 present하는 것

ex) 띄우는 view의 크기를 아래처럼 설정한 경우

view.frame = .init(x: 120, y: 120, width: 100, height: 100)

(present(vc)할때 vc.view의 backgroundColor를 blue로 설정한 경우)

  • fullScreen: 디바이스 사이즈만큼 VC를 띄움

  • currentContext: 띄우는 VC.view의 크기만큼 VC를 띄움

* 참고

- https://stackoverflow.com/questions/58262210/whats-the-difference-between-currentcontext-and-overcurrentcontext

- https://developer.apple.com/documentation/uikit/uimodalpresentationstyle

Comments