SwiftUI
-
allowsHitTesting을 통한 뷰 터치 이벤트 넘기기SwiftUI 2023. 10. 13. 10:57
안녕하세요. 그린입니다 🍏 이번 포스팅에서는 특정 뷰의 터치 이벤트를 무시하고 다음 뷰로 넘기는 뷰 모디파이어인 allowsHitTesting을 학습해볼께요 🙋🏻 이번 포스팅은 SwiftUI로 뷰를 구성하고 터치 이벤트를 뷰가 쌓여있을때 다루기에 너무 유용한데 아주 쉽기에 포스팅이 되게 간단할 수 있습니다! 너무 짧아서 스크롤을 내리기도 전에 포스팅이 끝날 수 있으니 빠르게 치고 빠져봐요 🧙🏻♀️ 우선 언제 사용할까요? 아래와 같은 코드가 있다고 가정해볼께요. struct ContentView: View { @State var isDisplayText: Bool = false var body: some View { VStack { Text("Green") .font(.title) .bold() .for..
-
SwiftUI에서 View의 Size 측정하기SwiftUI 2023. 9. 27. 11:04
안녕하세요. 그린입니다 🍏이번 포스팅에서는 SwiftUI에서 View의 Size를 측정하는 코드를 공유해볼까합니다 🙋🏻 어떨때 View Size 값이 필요할까요?우선, SwiftUI로 구현을 하다보면 원하는 해당 영역의 뷰 사이즈를 가지고 어떠한 작업을 해줘야하는 경우가 발생합니다. 예를들어, VStack으로 하위 뷰들이 쌓일때 헤더 영역에 여러 뷰들을 조합하여 넣고 이에 대한 헤더 영역의 뷰 높이를 가지고 어떠한 작업을 해줄때가 종종 발생합니다. 버튼 탭 등 인터랙션이 발생했을때 offset을 최상단으로 이동시키는것이 아닌 헤더 영역 이후부터 노출시키고 싶다면 이 헤더 영역의 height를 구해 y offset을 변경해줘야 할 수 있죠. 물론 이럴 경우 헤더 영역에 담긴 하위 뷰들의 프레임이 고정..
-
ScrollTargetBehaviorSwiftUI 2023. 9. 18. 12:29
안녕하세요. 그린입니다 🍏 이번 포스팅에서는 SwiftUI의 ScrollTargetBehavior라는것에 대해 학습해보려 합니다 🙋🏻 우선 이 ScrollTargetBehavior이 어떤건지 알아야겠죠? ScrollTargetBehavior? iOS 17 이상부터 SwiftUI에서 새롭게 지원하는 기능입니다. protocol ScrollTargetBehavior 이렇게 프로토콜로 스크롤 가능한 뷰의 스크롤 동작을 정의하는 유형이에요. 즉 쉽게 말해 우리가 SwiftUI의 ScrollView 컴포넌트를 사용하여 스크롤링을 할때 어떤 스크롤 동작을 해줄지를 정의할 수 있는것이죠. 그럼 이 기능이 SwiftUI에서 어떤 현실적으로의 기능을 해줄 수 있을까요? ScrollTargetBehavior이 없기전 우선..
-
DatePicker & Picker 사용하기SwiftUI 2023. 9. 11. 09:52
안녕하세요. 그린입니다 🍏 이번 포스팅에서는 SwiftUI로 DatePicker와 Picker 컴포넌트를 사용하는 방법에 대해 학습해보겠습니다 🙌 두 컴포넌트 모두 이름에서 알 수 있듯이 어떠한걸 선택하는 용도로 사용되는 컴포넌트겠죠!? 사실 되게 간단한 컴포넌트들이고 사용하기 나름이기에 한번 기본적인 사용법을 익혀볼께요! 그럼 DatePicker부터 바로 가보겠습니다 😁 DatePicker A control for selecting an absolute date DatePicker는 이름에서도 바로 알 수 있듯이 어떤 날짜를 선택해주는 역할을 지닌 컴포넌트입니다. 즉, 쉽게 말해 사용자가 특정 날짜를 선택할 수 있도록 하는 사용자 인터페이스 컴포넌트를 의미하죠. 날짜/시간을 선택할 수 있습니다! str..
-
SwiftUI의 onChange 사용 시 주의할 부분SwiftUI 2023. 9. 5. 09:49
안녕하세요. 그린입니다 🍏 이번 포스팅에서는 SwiftUI의 onChange 사용 구현 시 주의할 부분에 대해 한번 알아보려고 합니다 🙋🏻 우선, SwiftUI에서는 뷰에서의 프로퍼티 변화를 계속 감지하고 있다 변화가 일어나면 구현된 사항을 반영해주는 onChange 메서드가 있습니다. iOS 17 이전에서는 아래 onChange 메서드를 이용하게 되고, onChange(of:perform:) | Apple Developer Documentation Adds an action to perform when the given value changes. developer.apple.com iOS 17 이후부터는 위 onChange 메서드가 deprecated되어 아래 onChange 메서드를 이용해야 합니다...
-
UIApplicationDelegateAdaptorSwiftUI 2023. 8. 28. 11:19
안녕하세요. 그린입니다 🍏 이번 포스팅에서는 UIApplicationDelegateAdaptor에 대해 학습해보겠습니다 🙋🏻 UIApplicationDelegateAdaptor? 우선 UIApplicationDelegateaAdaptor는 SwiftUI에서 UIKit app delegate를 생성하는데 사용하는 프로퍼티 래퍼입니다. @MainActor @propertyWrapper struct UIApplicationDelegateAdaptor where DelegateType : NSObject, DelegateType : UIApplicationDelegate 선언은 위와 같이 되어 있는 프로퍼티 래퍼이죠! SwiftUI의 라이프 사이클을 사용하는 앱에서 앱딜리게이트 콜백을 처리하려면 UIApplic..
-
SwiftUI에서 타이머 구현하기 (feat. User Notification)SwiftUI 2023. 8. 22. 08:56
안녕하세요. 그린입니다 🍏 이번에서 SwiftUI에서 타이머를 구현하면서 시간이 다되면 Local Notification까지 받아보는 기능을 구현해볼께요 🙋🏻 우선 모델부터 설계해볼께요! Time Model 구현 설정한 타이머 시간을 시 / 분 / 초로 나눠서 각 타이머가 돌 수 있도록 하면 좋을것 같네요. 그러기 위해선 각 프로퍼티들이 필요하고 시 / 분 / 초로 나눈 시간을 변환하여 초로 만들어주는 프로퍼티들도 필요할것 같아요. struct Time { var hours: Int var minutes: Int var seconds: Int var convertedSeconds: Int { return (hours * 3600) + (minutes * 60) + seconds } static func ..
-
SwiftUI에서 Notification 사용하기SwiftUI 2023. 8. 17. 12:25
안녕하세요. 그린입니다 🍏 이번 포스팅에서는 SwiftUI에서 Notification을 받아 처리하는 방법에 대해 학습해보겠습니다 🙋🏻 흔히, 다른 뷰에서 이벤트가 발생하면 전역적으로 NotificationCenter를 통해 Notification을 쏘고 해당 노티피케이션을 수신하고 있는 다른 뷰들에서는 적절한 처리를 쉽게 해줄 수 있고 또 그럴때 많이 사용하죠! SwiftUI에서 간단하게 사용하는 방법에 대해 구현해보고 알아가보시죠 🕺🏻 우선 두가지 방식을 사용해보려해요! 가장 먼저 SwiftUI에서 onRecieve를 통해 수신 받아 사용하는 방법입니다. onRecieve 이용하기 코드가 간단하니 별도 파일을 쪼개지 않고 쉽게 한 뷰에서 보겠습니다. import SwiftUI struct Conten..