Date와 같은 범위(주, 달 등)의 기간 가져오기 dateInterval Calendar의 dateInterval 메소드를 사용해 해당 날짜와 Calendar.Component가 일치하는 날짜기간을 DateInterval 타입으로 가져올 수 있다. 예를 들어 해당 날짜와 같은 주(Week)의 날짜를 가져올 때 쓸 수 있다. let date = Date() // 2022-08-24 13:04:00 guard let dateInterval = Calendar.current .dateInterval(of: .weekOfMonth, for: date) else { return } // 2022-08-21 00:00:00 ~ 2022-08-28 00:00:00 Calendar.Component 날짜 범위를 특정..
SwiftUI에서 스피닝 프로그래스 뷰 만들기 회전하는 원 도형 만들기 적절한 길이의 원 도형을 생성한다. struct SpinningProgressView: View { var body: some View { Circle() .trim(from: 0.1, to: 0.9) .stroke(lineWidth: 10) } } 그라디언트를 추가하여 애니메이션 시 더욱 자연스러운 모습을 보이도록 바꿔준다. private let gradient = AngularGradient( //
SwiftUI에서 원형 프로그래스 뷰 만들기 원형 뷰 만들기 우선 원형 틀을 추가한다. struct CircleProgressView: View { var body: some View { Circle() .stroke(Color.red.opacity(0.5), lineWidth: 5) } } 그리고 실제 프로그래스를 나타낼 뷰를 ZStack으로 올린다. trim 모디파이어를 사용해 원을 잘라서 사용할 수 있다. ZStack { Circle() .stroke(Color.red.opacity(0.5), lineWidth: 5) Circle() .trim(from: 0, to: 0.25) //
이미지와 동영상 파일에는 방향 정보가 있어 뷰에 표시할 때에 방향을 적용해서 표시해야 한다. 적용가능한 UIImage에 적용 가능한 Orientation의 종류는 다음과 같다. (UIImage.Orientation, Image.Orientation) Up 원본 픽셀이 이미지의 의도와 동일. 방향 전환이 필요 없음. Down 180도 회전 필요. Left 반시계 방향으로 90도 회전 필요. Right 시계 방향으로 90도 회전 필요. Up Mirrored 좌우 반전 필요. Down Mirrored 위아래 반전 필요. Left Mirrored 좌우 반전 후 시계 방향으로 90도 회전 필요. Right Mirrored 좌우 반전 후 반시계 방향으로 90도 회전 필요. 아이폰에서 촬영한 사진/동영상의 경우 카메..
네이버지도 SDK에는 지도 확대 축소를 원할 때 카메라 포지션의 zoom 속성을 사용하는데 이 속성 외에는 카메라 포지션을 변경할 방법이 없어서 불편함이 있었다. 특정 직사각형 범위를 포함할 정도로 줌 레벨을 조절하기 위해 직사각형의 왼쪽위, 오른쪽아래 좌표값을 기반으로 중심점과 줌 레벨을 찾기 위해 조사한 것을 공유하고자 한다. 줌 레벨에 대하여 네이버 지도에서 줌 레벨은 0~22까지의 값으로 +1 될때마다 화면 기준점 사이의 실제 거리는 절반이 된다. 아래는 옛날 정보이지만(최신 정보를 찾지 못함) 대략적으로 어떤 방식으로 계산되는지 확인할 수 있다. 레벨 지도 상 거리 실제 거리 14 1px 0.25m 13 1px 0.50m 12 1px 1.00m 11 1px 2.00m 10 1px 4.00m ....
UIView의 경우 익히 알려진 방법들로 스크린샷을 촬영할 수 있다. extension UIView { func snapshot() -> UIImage { let renderer = UIGraphicsImageRenderer(size: bounds.size) return renderer.image { context in drawHierarchy(in: bounds, afterScreenUpdates: true) } } } SwiftUI의 View 타입은 UIView와 다르게 업데이트 시마다 이니셜라이즈된다. 뷰의 렌더된 이미지나 속성을 가지지 않고 UIView를 업데이트해주는 빌더라고 할 수 있다. 그래서 스크린샷 등 렌더링된 이미지를 구하려면 UIKit의 도움을 받아야 한다. View 타입을 즉시 렌더..
