Xcode에서 Preview기능을 활용하면 실제 기기 및 시뮬레이터를 사용하지 않고 최신 상태의 뷰 콘텐츠를 표시할 수 있어서 코드로 화면개발을 할 때 편리하다.
하지만, 실제 프로젝트에서 여러개의 라이브러리를 추가하고 빌드시간이 오래걸리는 프로젝트인 경우 오히려 실제기기를 빌드하는 게 더 빠른 경우도 있었기 때문에 해당 기능은 주로 빌드시간이 짧은 프로젝트의 경우 편리하다고 생각했다.
해당 기능은 주로 SwiftUI에서 자주 사용하고 UIKit에서 사용하는 방법이 존재하지만, 프로토콜을 채택해서 구현해서 추가해야되기 때문에 새로운 프로젝트를 생성할 때마다 코드를 추가해야하는 번거로움이 있었다.
iOS17이상부터 Swift Macro기능을 활용해서 굉장히 간단하게 UIKit에서도 사용할 수 있어서 블로그에 정리를 해보았다.
UITableView의 Footer가 status별로 변경되는 경우 Footer의 높이를 유동적으로 변경해야 한다. 따라서 systemLayoutSizeFitting(_:withHorizontalFittingPriority:verticalFittingPriority:)를 사용하여 최적크기를 반환하는 메서드를 사용하여 높이를 구하였는데 컨텐츠영역이 짤리는 이슈가 발생했다.
이유는 targetSize만 지정된 경우에도 최적크기를 구할 수는 있지만, 좀 더 targetSize에 정확한 크기를 얻기 위해 수직제약조건의 파라미터의 값을 설정함으로써 정확한 크기를 반환했다.
기본적으로 iOS에서는 Remote Notification을 표시하기 위해서는 APNs를 거쳐서 Push를 전달받을 수 있다.
따라서 APNs에 전송할 때 payload에 필요한 설정 및 정보들을 전달하게 된다.
알림 종류별로 그룹화하고 새 알림이 온다면 이전 알림들을 제거하는 기능을 구현해보고 싶어서 Extension을 활용하면 적용할 수 있는지 확인해보았지만, 서버에서 데이터를 전달할 때 payload설정을 통해서만 가능한 작업이였다.
해당 내용을 알게되면서 Service Extension으로 활용할 수 있는 작업에 대해서 알아보았다.
요약하자면 alert에 전달된 내용을 변경하는 기능을 담당한다. (텍스트 변경 및 이미지 추가)