일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Tuist
- List
- scrolling tab
- UIPresentationController
- development language
- url 추적
- swift
- Swift Package Manager
- notifychanged
- GeometryReader
- 개발자 면접
- oberve url
- 기존 앱
- pod install
- SwiftUI
- DevelopmentRegion
- base64 변환
- ViewBuilder
- convert base64
- UIViewControllerTransitioningDelegate
- Side Menu
- transformation.map
- detect url
- swift #swift keychain #keychain 사용법
- url 관찰
- 스크롤 탭
- ios
- 상단 탭바
- DataBinding
- Android
- Today
- Total
목록SwiftUI (8)
버그 잡이
SwiftUI는 선언형 프레임워크로서, 상태 관리를 효율적으로 할 수 있도록 다양한 도구를 제공합니다.그 중에서도 ObservableObject와 StateObject는 데이터 모델 관리에 중요한 역할을 합니다.이번 글에서는 ObservableObject와 StateObject의 정의와 사용법, 두 객체의 공통점과 차이점, 그리고 언제 어떻게 사용해야 할지에 대해 알아보겠습니다. ObservableObject란?ObservableObject는 SwiftUI에서 데이터의 변화를 감지하고, 뷰에 이를 반영할 수 있도록 도와주는 프로토콜입니다. 주로 뷰 모델(ViewModel)로 사용되어 데이터의 변경을 뷰에 전달합니다. 주요 특징:클래스 기반 객체에서 사용됩니다.@Published 어노테이션을 사용하여 프로..
AnyView란 무엇인가? SwiftUI에서 개발하다 보면 함수에서 서로 다른 타입의 뷰를 리턴해야 하는 경우가 생깁니다.이러한 상황에서 사용할 수 있는 것이 바로 'AnyView'입니다. 즉, 모든 종류의 뷰를 래핑할 수 있는 타입으로, 다양한 타입의 뷰를 하나의 타입으로 취급할 수 있게 해줍니다. 또한, 'AnyView'는 파라미터로 전달할 때도 유용하게 사용할 수 있습니다.함수에 여러 종류의 뷰를 파라미터로 전달해야 할 때, 다양한 타입의 뷰를 하나의 파라미터 타입으로 처리할 수 있게 해줍니다. struct CustomViewContainer: View { let content: AnyView var body: some View { VStack { Text..
SwiftUI를 쓰다보면 기존 AutoLayout 보다 성능이 떨어짐을 느낄 수 있습니다.실제로 AutoLayout보다 메모리를 평균 20% 정도 더 차지하고(물론 어떤 뷰를 그리느냐에 따라 달라지겠지만)이에 따라 성능상으로도 다소 떨어진다는 연구 결과도 있습니다.이해 없이 SwiftUI를 쓰면 성능상 저하를 가져올 수 있기 때문에 SwiftUI는 어떤 식으로 비교 연산을 하고 어떻게 최적화 할 수 있을지 알아봅시다. https://medium.com/@vladislavshkodich/mastering-swiftui-are-you-really-as-good-as-you-think-40a4953f7e88위 글(Mastering SwiftUI: Are you really as good as you think..
List는 아래와 같이 기본적으로 여백, 구분선 등의 스타일이 적용되어 있습니다. 그런데 저는 커스텀 하게 스타일링하기 위해서 태초의 상태로 되돌리고 싶었습니다. 어떻게 스타일을 지울 수 있을까요? .listStyle(.plain) 리스트는 여러 스타일이 있는데요. 스타일 속성을 plain으로 줄 수 있습니다. List { Text("item1") Text("item2") Text("item3") } .listStyle(.plain) 이렇게 listStyle을 plain으로 하면 기존의 background 컬러, 여백 등의 속성을 없앨 수 있습니다. 구분선 제거 하지만 아직 구분선이 남아있네요. 구분선을 없애보겠습니다. iOS 15 이상인 경우, listRowSeparator(.hidden) 이라는 속성..
최근 다이어리 앱을 만들고 있는데요. 아래와 같이 시간대별로 기록할 수 있는 리스트를 가지고 있습니다. "저는 현재 시간의 Row를 최상단으로 스크롤 하고 싶었습니다." (현재 시간이 14시면 14시 row를 최상단으로 스크롤) scrollTo(_:anchor:) ScrollView에서 해당 ID가 있는 하위 뷰를 찾아서 해당 뷰로 스크롤 합니다. id는 하위 뷰를 판단할 수 있는 고유값이고 anchor는 타겟이 되는 하위 뷰를 스크롤 어디에 위치시킬지 결정하는 옵션입니다. (.top, .center, .bottom, .leading, .trailing 등의 옵션이 있습니다.) 기본 코드 예시 struct ContentView: View { var body: some View { ScrollViewRea..
textEditor 우측에 있는 scrollIndicator가 보기 안 좋습니다. 이를 안 보이게 하고 싶습니다. 구글링을 해봤습니다.. https://stackoverflow.com/questions/73702315/texteditor-scroll-hidden-in-swiftui TextEditor(text: $context) .introspectTextView { textView in textView.showsVerticalScrollIndicator = false } introspect라는 라이브러리가 있다는 것을 알게 되었네요. UIKit의 속성들을 쉽게 가져다 쓸 수 있게 도와주는 라이브러리입니다. (사용하려면 cocoaPod이나 spm으로 해당 라이브러리를 추가하고 import 해줘야 합니다...
https://www.youtube.com/watch?v=80n0zv7r9Lc 위 영상을 보고 학습한 내용입니다. swiftUI로 위와 같은 화면을 만들어 보겠습니다. 위 화면을 만들기 위해서 크게 두 개의 View가 생성될 예정입니다. 1. OffsetPageTabView - UIScrollView를 활용해서 content를 담을 수 있는 View - 탭바 아래 스크롤 되는 conent 화면 2. PagerTabView - TabView와 OffSetPageTabView를 가지고 있는 View 하나씩 차근차근 만들어보겠습니다. OffsetPageTabView 1. content를 통해서 UIScrollView 안에 넣어줄 View를 받습니다. 2. MakeUIView로 UIScrollView를 만들고 ..
@State SwiftUI에 의해 관리되는 값을 읽고 쓰는 Property Wrapper 타입 "Property Wrapper " - 프로퍼티를 감싸 특별한 타입으로 만들어주는 친구. - 감싸는 행위를 통해서 코드 추가 없이 프로퍼티에 특정 기능을 추가할 수 있다. "SwiftUI에 의해 관리된다" - 변수에 변화가 생겼을때 해당 value의 appearance를 무효화 하고 다시 body 값을 계산 즉, 변수에 변화가 생겼을때, 이를 화면에 바로 반영할 수 있게 도와주는 Property Wrapper가 @State입니다. @State 사용법 아래는 공식 문서에 있는 예제입니다. isPlaying값에 따라 Button의 title이 달라지는 것을 볼 수 있습니다. struct PlayButton: Vie..