iyOmSd 178

[SwiftUI] ChipView(iOS16+, iOS16-) tag view 구현하기

2023.09.30 - [iyOmSd/Title: Swift] - [Swift] Multi Line Tag View 그리기 [Swift] Multi Line Tag View 그리기 SwiftUI만 하다가 UIKit을 하게될 일이 생겼는데 요구사항중하나가 뷰를 크기에 맞게 여러줄로 표현해주는 뷰에요 테그를 표현하는 뷰같은 곳에 많이 쓰이는 UI로 알고있어요 결과물 부터 보시죠! nsios.tistory.com UIKit을 사용하는경우는 여기서 확인가능합니다!! 저 글을 쓸땐 이 레이아웃을 chip이라고 부르는지 몰랐어요 ㅎ 간단하게 ChipView란? 균등한 너비를 가지는게아니라 컨텐츠의 크기에 fit하게 정렬되고 그 사이즈를 넘어간다면 아래로 이동되는 그러한 뷰입니다! 아래처럼요 이런 뷰가 ChipVie..

[Swift] iMessage 필터링 ILMessageFilterExtension (스팸 차단)

메시지 필터링을 개발할 기회가 생겨서 학습한 것을 기록하려고해요 먼저 프로젝트를 생성하고 file > new > target에서 Message Filter Extension을 클릭하면 이렇게 파일이 생성됩니다! 기본적인 템플릿코드는 작성돼있고 설명도 같이 써져있어요 각 함수의 역할을 알아봅시다! func handle(_ capabilitiesQueryRequest: ILMessageFilterCapabilitiesQueryRequest, context: ILMessageFilterExtensionContext, completion: @escaping (ILMessageFilterCapabilitiesQueryResponse) -> Void) { let response = ILMessageFilterCap..

iyOmSd/Title: Swift 2024.02.27

[Swift] TimeZone과 Locale

여러나라에 배포할 서비스를 개발하면서 헷갈렸던 개념을 정리해보려고해요 TimeZone 특정 지정학적 지역과 관련된 표준 시간법에 대한 정보. 지정학이란 지리적 환경과 정치현상의 관계를 연구하는 학문이라고하네요 다른나라를 여행갈 때 흔히 겪는 시차를 계산할 때와 같아요 국가별로 고유한 TimeZone을 사용하고있어요 문서를 보면.. TimeZone은 시간대의 동작을 정의합니다 TimeZone값은 지정학적 지역을 나타내고 이러한 값에는 해당 지역에대한 이름이 존재합니다. TimeZone값은 그리니치 표준시(Greenwich Mean Time)라고 부르는 GMT에서 더하거나 뺀 시간적 차이 입니다. swift TimeZone타입은 current와 autoupdatingCurrent 2가지 함수를 제공합니다 ..

iyOmSd/Title: Swift 2024.01.30

[SwiftUI] WWDC23 Demystify SwiftUI Performance

SwiftUI에 대한 성능적인 측면을 좀더 알아보고싶어서 찾아본 세션이에요 성능문제는 증상에서 부터 시작됩니다. 네비게이션 푸시가 느리거나 애니메이션이 끊기는현상이 보이거나 로딩 인디케이터가 뜨거나 등 현상이 일어날 때 증상을 보고 파악하게됩니다. 성능 문제가 있다는것을 파악하면 문제를 해결하는 첫단계는 측정이고 증상이 있음을 입증하고 증상의 원인을 파악합니다. 근본 원인을 파악한 후에는 최적화해서 문제를 해결합니다. 고친내용을 다시측정하고 입증하고 문제가 해결됬는지 확인합니다. 이를 반복하게 됩니다. 이 세션을 듣기위해서는 SwiftUI의 identity를 이해하고있어야하고 암시적, 명시적 identity가 어떻게다른지 view lifetime과 identity의 차이를 알고있어야한다고 하네요! 자세한..

[Swift] NSTextAttachment, 이미지 텍스트화

NSTextAttachment 요타입에 대해 알아보려합니다~! ???: 보기 드문타입인거같은데 어떻게 이 타입을 알게 됐나요..? 🤯: 요구사항을 보고 이건 클릭이 안 되겠지 생각하고 간략히 속성을 보여주는 뷰구나~ 하고 Label 컴포넌트로 만들어놨는데... 추후에 특정타입만 클릭이 가능하고.. 특정 타입에 대해선 이미지까지 앞에 붙어야하는 스펙이더라구요... 이걸 버튼으로 바꿔야하나.. 말아야하나...이미 구현해놔서 건드려야하는게 많아서 Label에 이미지를 넣을 순 없을까 하던중 찾게 된 타입이죠 정의! attributed strings and related objects의 첨부 특성값이라네요 정의만 보고는 먼 소린지 모르겠네요! NSTextAttachment는 NSAttributedString에서..

iyOmSd/Title: Swift 2023.10.31

[Swift] Multi Line Tag View 그리기

SwiftUI만 하다가 UIKit을 하게될 일이 생겼는데 요구사항중하나가 뷰를 크기에 맞게 여러줄로 표현해주는 뷰에요 테그를 표현하는 뷰같은 곳에 많이 쓰이는 UI로 알고있어요 결과물 부터 보시죠! 네 이런뷰입니다.. SwiftUI로도 이뷰는 어떻게 만들어야할까 깊은 고뇌를 해봤습니다... 스유는 레이아웃 건드는게 좀 어렵더라구요 🤯 우선 UIKit으로 개발해야하니깐 UIKit관점에서 쉬운방법으로 구현해봤습니다! 이런뷰를 구현할때 많은 방법이 존재하겠지만 단순한 방법으로 뷰의 frame을 계산해서 구현하는 방식을 선택했어요 전체코드는 아래와같아요! class MultiLineTagView: UIView { private let horizontalSpacing: CGFloat private let vert..

iyOmSd/Title: Swift 2023.09.30

[SwiftUI] StateObject init 생성자

이글을 쓰게된 동기는... 정말 아무렇지않게 습관처럼 코드를 작성하다가 겪은 이슈를 공유하려 합니다! StateObject를 사용할 때 어떻게 알고 사용하시나요? 보통은 ObservedObject랑 비교를 하면서 ownership이 다르다 뷰의 생명주기와 별개다 별도로 저장돼서 사용된다 뷰의 수명동안 새로운 인스턴스를 한번만 생성한다 정도로 알고 사용하는거라고 생각해요 그래서 ObservedObject와 차이를 두며 사용을 하곤하는것 같아요! (저도 이랬던거같네요... ㅎ) 이렇게 사용하다보면 간혹 만나는 문제점이 생겨요 struct StartView: View { @State private var selectedNum: Int = 10 var body: some View { ScrollView { La..

[SwiftUI] Charts 실전편 (feat. iOS16+ apple framework)

2023.06.29 - [iyOmSd/Title: SwiftUI] - [SwiftUI] Charts 이론편 (feat. iOS16+ apple framework) [SwiftUI] Charts 이론편 (feat. iOS16+ apple framework) 슬슬 미니멈버전이 16이 되는 시대가 다가오고 있는 만큼 iOS16 부터 사용할 수 있는 내장 프레임워크인 Charts 를 알아보려고 합니다! 간단하게 이론적인 부분위주로 어떻게 쓰이고 사용할 수 있는 nsios.tistory.com 을 통해서 기본적인 사용법을 익혔으니 이젠 직접 구현해보면서 다양한 케이스를 확인하려고해요! 기본적인것들만 알아볼게요 BarMark 간단한 BarChart부터 뜯어볼까요 struct Case1: Identifiable { ..

[SwiftUI] Charts 이론편 (feat. iOS16+ apple framework)

슬슬 미니멈버전이 16이 되는 시대가 다가오고 있는 만큼 iOS16 부터 사용할 수 있는 내장 프레임워크인 Charts 를 알아보려고 합니다! 간단하게 이론적인 부분위주로 어떻게 쓰이고 사용할 수 있는지 쓰윽 볼까요? 웅장합니다 이런 모든 차트를 구현할 수 있다고 하네요 차트프레임워크는 SwiftUI와 동일한 선언적 구문을 사용하여 차트를 시각화합니다 Mark와 Property의 조합으로 다양한 차트를 구현할 수 있다고 하네요 이처럼 어떤 Mark를 고르는지, 어떤 프로퍼티를 고르는지에 따라 정말 많은 차트가 생길 것 같네요 Marks and composition 차트에서 여섯개의 파란색 직사각형을 Mark라고합니다 Mark는 데이터를 나타내는 그래픽요소이고 각각 하나의 막대는 Bar Mark입니다. 이..

[SwiftUI] NavigationStack

안녕하세요! SwiftUI에서 항상 느꼇던 불편한점중 하나가 네비게이션이였는데요 이를 해결해주는게 나온지 좀 됐지만 이제 해보려합니다! (진작에 나왔을 녀석이여야 했는데...) iOS16 타겟을 쓸일이 없지만... 곧 쓸 지도 모르니까요! 😁 타입은 새롭지만 저희한텐 익숙합니다 push pop되는 그런 인터페이스를 나타내기때문이죠! 이것말고도 NavigationSplitView 타입도 있어요 mac이나 iPad에서 사용하는 다중열을 보여줄 때 사용하는 타입이죠 NavigationSplitView은 스킵하고 오늘은 NavigationStack을 알아보려합니다 이전에는 NavigationLink를 이용한 방식으로 var body: some View { NavigationView { NavigationLink..