SwiftUI 8

[SwiftUI] onScrollVisibilityChange 뷰 노출 이벤트

iOS18+에서부터 사용가능한 API를 간단하게알아보려합니다. 지금까지 스크롤뷰에서 특정 뷰가 노출됬다를 표시할땐onAppear으로만 체크가능했고 혹은 특정지점에 뷰를 하나 숨겨서 체크해왔엇죠!LazyStack을 쓰지않으면 로드시 모두 onAppear가 실행되서신경써야했구요! 하지만 이번에 알아볼 onScrollVisibilityChange는뷰가 최소 몇% 노출되면 액션을 처리 할 수 있는 함수에요 threshold뷰의 몇%가 보이면 정의된 action이 실행될 것인지를 정합니다.기본값은 0.5로 뷰의 반이 보이면 action이 실행되요 actionthreshold만큼 뷰가 보이거나반대로 스크롤해서 threshold만큼 뷰가 안보여졌을때실행될 작업을 정의합니다. action에 Bool값으로해당 %만큼 뷰..

[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..

[SwiftUI] Widget LiveActivity (feat. Dynamic Island) 잠금화면 기능

LiveActivity가 무엇이냐..? 잠금화면에서 확인할 수 있는 실시간 액션같은 기능이에요 대표적인 예로 배달의 민족에서 사용하고있어요 배달 시키면 이런거 잠금화면에서 볼수있죠? 네 이런겁니다~! 이걸 오늘 해보려고 합니다! ActivityKit 을 사용해요 iOS16.1+ 부터 사용가능하구요! 위젯과 같이 만들어줘야하는 녀석이에요 프로젝트를 만들고 File > New > Target 에 widget을 선택하면 아래와같은 창이뜨는데 Include Live Activity 체크박스를 클릭해줘야합니다! 그러면 관련된 기본 템플릿이 쫙해서나올거에요 plist에가서 Supports Live Activities값을 YES로 권한 설정해줘야 사용가능합니다! 여기까지 셋팅을 끝냈으면 코딩만 남았네요 struct ..

[SwiftUI] Intent Widget 동적 위젯 만들기

위젯은 만들때 두가지 형태로 만들수있어요 static형식과 intent형식이 있죠 2021.07.06 - [iyOmSd/Title: SwiftUI] - [SwiftUI] Widget 위젯만들기 이름에서도 느껴지듯 static은 그냥 보여주기만하는 정적인 위젯이에요 위젯 타임라인에 의해서 일정주기로 업데이트되거나 특정API로 위젯을 새로고침해서 보여주는 방식이죠 하지만 오늘 해볼것은 intent 형식이에요 intent형식은 위젯에 동적으로 값을 선택할 수 있고 사용자와 상호작용이 가능한 특성이 있어요 intent 체크박스를 클릭하면 intent형식의 위젯을 생성할 수 있어요 static과는 다르게 .intentdefinition파일이 생성되는걸 볼 수 있어요 위젯설정파일 같은곳인데 여기서 필요한 파라미터..

카테고리 없음 2023.01.01

[SwiftUI] @FocusState

iOS15+에서 지원되는 프로퍼티래퍼에요 포커스되는 상태를 관리할 수 있는 타입이에요 대표적으로 텍스트필드에서 자주쓰이죠 텍스트필드를 포커스했을때, 리턴했을때를 구분해야하는데 iOS15 미만에선 onCommit, onEditingChanged 를 통해서 관리했지만 iOS15+ 부터는 @FocusState와 onSubmit onChange를 이용해요 예시를 만들어봤어요 struct TextFieldTest: View { @frozen enum FocusType: Hashable { case textfield1 case textfield2 } @State private var text: String = "" @FocusState private var focus: FocusType? var body: some..