sookim-1

번호 : 011, 작성일자: 2024-04-15

2024.04.08 ~ 2024.04.14

📱 Bottom Sheet


앱의 어느위치에서든 아래에서 올라오는 스타일을 BottomSheet라고 정의한다.

BottomSheet는 스크롤에 따라서 화면을 변경할 수 있다.

이번에 구현해보았던 BottomSheet의 조건

  1. 스크롤을 위로 특정 높이만큼 되었다면 최대 높이로 화면을 표시
  2. 스크롤을 기본 높이 정도 아래로 내린 경우 기본 높이로 화면을 표시
  3. 스크롤을 최소높이 아래로 내린 경우 화면을 사라지게 하도록 표시

구현방법은 superview에 UIPanGestureRecognizer를 추가하고 이벤트로 전달받은 UIPanGestureRecognizer의 state를 통해 종료된 경우와 변경 중인 경우를 전달받는다.

그리고 해당시점에 UIPanGestureRecognizer의 view의 좌표를 전달받아서 처음 설정했던 높이들과 비교하여 BottomSheet의 높이를 변경했다.

🗺️ 네이버지도 커스텀마커


네이버지도 SDK를 사용 중인 경우 사용자에게 좌표에 대한 정보를 표시하기 위해 마커를 사용할 경우가 있다. 네이버지도에서 마커를 표시하기 위해서는 NMFOverlayImage를 전달해야 하는데 해당 객체를 생성하기 위해서는 UIImage나 에셋의 이미지명을 제공하여 생성할 수 있다.

하지만, 이미지와 텍스트가 합쳐진 마커를 표시하기 위해서는 커스텀뷰(UIView)를 생성한 후 UIImage로 변경하여 커스텀마커를 표시할 수 있다.

텍스트가 유동적으로 변경해야하는 조건이 있어서 intrinsicContentSize로 텍스트의 크기를 가져온 후 프레임을 재조정 한 후 layoutIfNeeded 메서드로 업데이트해서 해결할 수 있다.

iOS Naver Map CustomMarker 해당 블로그를 참고했는데 도움이 많이 되었다.

🙋🏻‍♂️ 기타 사항


  1. UIStackView를 생성한 후 SubView들을 추가할 때 실수로 addArrangedSubview 가 아니라 addSubview 로 추가하는지 주의해서 사용해야겠다.
  2. Xcode 15이상에서 Kingfisher의 ImageResource 타입을 사용한다면 Xcode15에서 새로 추가된 ImageResource 타입과 이름이 동일하여 충돌이 발생한다. 따라서 타입별칭을 이용하여 사용해야한다.
        typealias KFImageResource = Kingfisher.ImageResource
    
    태그: