Weak Self
·
SwiftUI
Weak Self란 강한 참조로 인해 발생하는 메모리 누수를 방지할 수 있도록 합니다 [weak self]을 사용하지 전바로 코드로 설명하겠습니다.먼저 2개의 뷰를 만듭니다. 하나는 다른 화면으로 이동하는 뷰이고 다른 하나는 이동된 2번째 뷰입니다. 이때 overlay로 AppStorage에 count 키값으로 저장된 값을 우측 상단에 표시합니다.struct ContentView: View { @AppStorage("count") var count: Int? init() { count = 0 } var body: some View { NavigationStack { NavigationLink { ..
Background Threads, Queues
·
SwiftUI
Background Thread를 사용해야 하는 이유작업을 할 때 무거운 작업을 하는 경우 CPU를 많이 사용하기 됩니다. 다음은 현재 사용중인 CPU 사용률을 확인하는 방법입니다.아래에서 첫 번째 Thread인 Thread 1은 메인 스레드이며 대부분의 코드들이 기본적으로 메인 스레드인 Thread 1에서 작업이 됩니다. Thread 1 즉 메인 스레드에서 작업을 가볍게 하는 경우는 상관 없지만 만약 무거운 작업을 하게 되어 Thread 1 메인 스레드가 포화 상태가 된다면 다른 작업들은 할 수 없게 되며 이게 굉장히 안좋은게 UI 변화 같은 경우도 메인 스레드에서 작업을 하기 때문에 화면이 버벅인다거나 멈출 수 있기 때문입니다. 하지만 CPU는 메인 스레드 외에도 여러개의 스레드를 만들어 낼 수 있습..
Custom ViewModifiers
·
SwiftUI
ViewModifier는 중복되는 코드를 줄여줄 수 있는 방법 중 하나입니다 ViewModifier 프로토콜을 사용하여 어떤 뷰에서든 재사용 가능한 modifier를 만들 수 있습니다. 아래는 비슷한 UI를 가진 Text를 여러개를 포함한 코드입니다. var body: some View { Text("Hello, world") .font(.headline) .foregroundStyle(.white) .frame(height: 55) .frame(maxWidth: .infinity) .background(Color.blue) .padding() ..
@FocusState 로 키보드 다루기
·
SwiftUI
예로 텍스트 뷰에서 코드 상으로 키보드를 올렸다 내릴 수 있습니다 값을 초기화하지 않아도 TextField에 의해 자동으로 @FocusState의 값이 정해집니다.만약 TextField 를 클릭하게 된다면 .focused를 사용하여 인식되어 해당 값이 true로 바뀌게 됩니다.@FocusState private var usernameInFocus: Bool@State private var username: String = ""var body: some View { VStack { TextField("Add your name here...", text: $username) .focused($usernameInFocus) .frame(height: 5..
swipeActions
·
SwiftUI
swipeActions는 리스트에서 행을 옆으로 밀었을 때 액션을 커스텀화하는 것 입니다 List는 기존에 onDelete를 사용하여 리스트에서 행을 삭제하는 기능을 제공하였습니다. 하지만 삭제 외에 추가적인 작업을 하고 싶을 때 swipeActions를 사용하여 커스텀 동작을 추가해줍니다.파라미터edge:  어느 방향으로 스와이프 될 것인지를 결정합니다. 왼쪽은 .leading, 오른쪽은 .trailing 입니다. allowsFullSwipe: 말 그대로 완전히 스와이프하여 화면 끝까지 넘길 수 있는지 여부입니다. 기본값은 true 입니다.: 만약 사용자가 스와이프하여 화면 끝까지 넘기게 된다면 실행중인 스와이프가 취소되어 다시 원점으로 돌아갑니다.: 이때 스와이프 콘텐츠에 여러개가 있다면 해당 콘텐츠..
애플워치로 실시간 심박수 가져오기, 애플워치 타깃 추가하기
·
SwiftUI
1. 애플워치 추가하기- File - New - Target 로 애플워치 앱 target를 추가해줍니다. 선택사항이 있는데 종류의 의미는 다음과 같습니다. Watch-only App- 이 옵션은 Apple Watch 에서만 실행되는 독립적인 watchOS 앱을 생성합니다. iOS 앱이 없어도 동작합니다 Watch App with New Companion iOS App- 이 옵션은 watchOS 앱과 함께 새로운 iOS 앱을 동시에 생성하여 동반 앱으로 설정합니다. Watch App for Existing iOS App (기존 iOS 앱을 위한 워치 앱)- 이 옵션은 현재 존재하는 iOS 앱 프로젝트에 watchOS 앱 타깃을 추가하여 동반 앱으로 설정합니다.     2. Bundle Identifier,..
ytw_developer
'SwiftUI' 태그의 글 목록 (4 Page)