TREASURE408 SwiftUI : Sound Effects _ AVKit sound effect 에 대해 알아보도록 합시다. Sound Effect 이번에는 앱에 아무 간단한 음향 효과를 추가하는 방법에 대해 알아보려고 합니다. 이 기능은 앱을 만들어면서 아주 유용하게 사용되므로 꼭 알아두시는 것이 좋습니다. 그럼 바로 시작하죠! 우선 새로운 프로젝트를 만들고 SoundSetting이라는 class를 하나 생성해주겠습니다. 그리고 ContentView에 이 클래스를 변수를 사용하여 가져와볼게요. import SwiftUI class SoundSetting: ObservableObject { } struct SoundEffectView: View { var soundSetting = SoundSetting() var body: some View { Text("Hello, Wor.. SWIFTUI/Others 2021. 6. 27. SwiftUI : Combine과 함께 JSON 다운로드하기 목차 Combine프레임워크를 사용한 JSON Data 다운로드 이번에는 Comebine프레임워크를 사용하여 코딩을 해보도록 하겠습니다. 이번 게시글을 통해 Combine프레임워크가 얼마나 유용하고 강력하고 간결하고 부드러운지 알 수 있을 거라고 생각됩니다. 우선 시작하기전에 JSON Data를 @escaping을 사용하여 다운받아오는 방법에 대한것을 숙지하지는 것을 추천드립니다. 이번 게시글은 @escaping을 사용한 것과 새로운 프레임워크인 combine을 사용한 것을 비교하기 위한 포스팅입니다. 저는 개인적으로 combine을 사용해 JSON data를 다운로드해 가져오는 방법을 선호하는 편입니다. 왜냐하면 더 간결하고 구현하기 쉽기 때문이죠 :) 그럼 새로운 SwiftUI 파일을 생성하고 바로 .. SWIFTUI/Others 2021. 6. 22. SwiftUI : @escaping과 함께 JSON Data 다운로드하기 Escaping클로저를 사용한 JSON Data 다운로드 이번에는 @escaping클로저와 함께 JSON Data를 인터넷에서 다운로드해오는 방법에 대해 알아볼까 합니다. 웹데이터를 앱에서 사용할 수 있는 데이터로 변환하고 그 API를 화면에 띄워주는것이 목표입니다. 우선 새로운 SwiftUI 파일을 생성하고 이름은 DownloadWithEscaping이라고 정해주겠습니다. 그런 다음 ViewModel class를 생성해줘야겠죠? import SwiftUI class DownloadWithEscapingViewModel: ObservableObject { init() { getPosts() } func getPosts() { } } struct DownloadWithEscaping: View { @Sta.. SWIFTUI/Others 2021. 6. 18. SwiftUI 3.0의 새로운 기능! [ iOS 15, Xcode 13 ] 본 게시글은 Anupam Chugh 님의 게시글을 번역한 자료 입니다. 목차 SwiftUI는 Apple의 선언적 UI 프레임 워크입니다. 이번 WWDC 2021에서는 흥미로운 새로운 개선 사항, 일부 기능의 사용 중단 발표가 있었고, 개발자들에게 다시 한번 환영을 받았습니다. SwiftUI 3.0은 iOS 15, iPadOS 15, macOS 12 및 watchOS 12에서 사용할 수 있습니다. 시작하기 전에 주목할 사항이 있습니다. Info.plist 파일은 기본적으로 Xcode 13 Project 구조에서 더 이상 표시 되지 않습니다. 대신 프로젝트 내비게이터 탭에서 액세스 해야 합니다. 다음 몇 섹션에서는 iOS 15 용 SwiftUI의 새로운 기능을 살펴볼 것입니다. (대부분 다른 플랫폼에서도 일.. SWIFTUI/Others 2021. 6. 12. SwiftUI : @escaping @escaping에 대해 알아보도록 합시다. @escaping 이란? Escaping클로저는 클로저가 함수의 인자로 전달됐을 때, 함수의 실행이 종료된 후 실행되는 클로저입니다. Non-Escaping클로저는 이와 반대로 함수의 실행이 종료되기 전에 실행되는 클로저입니다. 앱을 만들면서 우리는 자주 인터넷에서 데이터를 다운로드해야 합니다. 이때 바로 비동기(Async) 코드를 사용해야 합니다. 보통 함수를 실행할 때는 위에서 아래로 함수가 실행되는데 만약 우리가 데이터베이스로 갈 때에는 인터넷에서 데이터를 다운로드한 뒤에 이 데이터를 바로 앱으로 가져올 수 없습니다. 왜냐하면 먼저 서버로 이동하고 데이터를 가져오기까지 몇 초의 시간이 걸리기 때문이죠. 그렇기 때문에 비동기 처리를 해야 합니다. 그리고 이.. SWIFTUI/Grammar 2021. 6. 11. Swift : 기초문법 [Typealias 타입 별칭] typealias 에 대해 알아보도록 합시다. Typealias Swift에서 기본으로 제공하는 데이터 타입이든, 사용자가 임의로 만든 데이터 타입이든 이미 존재하는 데이터 타입에 임의로 다른 이름을 부여할 수 있습니다. 즉, 기존에 선언되어있는 유형에 새로운 유형의 별칭을 사용해 코드를 읽고 이해하기 쉽도록 명확하게 만드는 문법입니다. Swift, SwiftUI에서는 이를 세 가지 유형으로 나누어 사용합니다. 1. 내장 유형 [ String ] , [ Int ] , [ Float ] ... 2. 사용자 정의 유형 [ class ] , [ struct ] , [ enum ] ... 3. 복합 유형 [ closuer ] typealias MyName = String typealias YourName = S.. SWIFT/Grammar 2021. 6. 9. SwiftUI : Background Threads / Queues 이 게시글을 보시기 전에 DispatchQueue에 대에 먼저 보시고 오시는 것을 추천드립니다. Thread 기본적으로 앱에는 여러 Thread가 있습니다. 이 Thread는 작업을 수행할 수 있는 프로세스를 수행할 수 있죠. 앱에 작성하는 모든 코드는 main Thread 즉, Thread1에 선언됩니다. 특별히 지정하지 않은 이상은 Main Thread에서 작업이 진행되는 것이죠. 하지만 코드를 작성하면 작성할수록 코드가 길어지고 Main Thread에서 많은 작업을 수행하게 되고 앱의 속도가 느려지고 렉을 유발할 수 있습니다. 그래서 Download와 같이 background에서 발생하는 무거운 작업을 Main Thread가 아닌 Background Thread에서 실행하는 것이 가장 좋습니다. T.. SWIFTUI/Others 2021. 6. 7. SwiftUI : @FetchRequest 속성 래퍼 [Core Data #1] Core Data? Core Data란 기본적으로 내부에 저장된 데이터 베이스입니다. 아이폰을 사용하여 데이터를 저장할 수 있습니다. 이 데이터는 세션 간에 유지되므로 사용자가 앱을 닫고 다시 열었을 때 데이터가 저장됩니다. 마치 @Appstorage나 UserDefault 같이 말이죠. SwiftUI는 Core Data 작업을 위한 속성 래퍼를 제공하며 추가 로직을 작성하지 않고도 SwiftUI View에 데이터를 직접 포함할 수 있습니다. UserDefaults : 앱의 Preference 를 저장할 때 주로 사용합니다. CoreData : SQLite 에 직접 접근하는 방식만큼 유연함을 제공하면서도 앱과 데이터베이스의 동작 방식을 분리해줍니다. 앱이 많은 데이터를 필요로 하고 여러 다른 객체 간의 .. SWIFTUI/Others 2021. 6. 5. Swift : 기초문법 [DispatchQueue란?] (GCD : Grand Central Dispatch) GCD 에 대해 알아보도록 합시다. DispatchQueue DispatchQueue는 작업 항목의 실행을 관리하는 클래스입니다. DispatchQueue는 장점은 일반 Thread 보다 쉽고 효율적으로 코드를 작성할 수 있습니다. 보통 서버에서 데이터를 받고 이미지 동영상을 외부에서 다운로드 및 처리할 때 CPU 사용량이 많아 처리를 Main Thread가 아닌 별도의 Thread에서 처리한 뒤 Main Thread로 결과만을 전달하여 화면에 표시하도록 하여 CPU를 관리할 수 있습니다. DispatchQueue의 종류 : Seral / Concurrent Seral 이전 작업이 끝나면 다음 작업을 순차적으로 실행하는 직렬 형태의 Queue. 하나의 자겁을 실행하고 그 실행이 끝날 때까지 대기열에 있는.. SWIFT/Grammar 2021. 6. 1. SwiftUI : Mask Mask SwiftUI에서는 mask()수정자를 사용하여 이미지 또는 텍스트를 마스크 할 수 있습니다. 간단한 예제를 보면서 어떻게 사용할 수 있는지 알아보도록 할게요. VStack { Image("sample2") .resizable() .aspectRatio(contentMode: .fit) .mask( ZStack { Circle() .frame(width: 208, height: 208) Circle() .frame(width: 90, height: 90) .offset(x: 80, y: 55) } ) .frame(maxHeight: .infinity) } 이제 mask를 활용해서 평점을 줄 수 있는 버튼을 하나 만들어 줄까 해요. 우선 별이 5개인 뷰를 만들어줍니다. import SwiftUI .. SWIFTUI/Others 2021. 5. 30. SwiftUI : Gesture TapGesture 에 대해 알아보도록 합시다. 모든 SwiftUI view에는 Gesture 인식기가 연결될 수 있으며 이러한 Gesture인식기는 인식기가 활성화될 때 실행될 클로저를 차례로 연결할 수 있습니다. TapGesture 이것을 만들 때 제스처를 트리거하는 데 걸리는 탭 수를 지정한 다음, 제스처가 발생할 때 실행될 onEnded 클로저를 연결할 수 있습니다. 예를 들어 택할 때마다 작아지는 이미지를 만들어 보겠습니다. struct ContentView: View { @State private var scale: CGFloat = 1.0 var body: some View { Image("seogun") .scaleEffect(scale) .gesture( TapGesture() .onEn.. SWIFTUI/Others 2021. 5. 29. SwiftUI : If let과 Guard If let / Guard 안전한 코딩은 정말 좋은 코드입니다. 값이 있는지 없는지 선택적 변수인지의 여부 등을 안전하게 나타내 줍니다. 안전한 코딩에는 if let과 guard let이 있습니다. If let의 대안은 guard let이며 unwrapping 옵셔널도 이에 해당합니다. guard let은 우리를 위해 언래핑 되지만, 내부에서 nil을 찾으면 사용한 함수, 루프 또는 조건을 종료할 수 있습니다. guard let 도 if let과 비슷하지만 다른 점이 있습니다. guard라는 것은 지키다 라는 뜻처럼, guard 문은 특성상 함수(메서드)에서만 쓰이며, guard구문의 조건을 만족하지 못하면 else문으로 빠져서 함수의 실행을 종료시킬 때 사용합니다. If let SwiftUI에서 사용해.. SWIFTUI/Grammar 2021. 5. 14. SwiftUI : onAppear() onAppear() View 가 나타날 때 실행될 acttion을 추가합니다. SwiftUI는 UIKit의 ViewDidDisplay() 와 동등한 기능을 제공합니다. 원하는 모든 코드를 이 두 이벤트에 첨부할 수 있고, SwiftUI는 이벤트가 발생할 때 이것을 실행합니다. 즉 특정 뷰가 화면에 나타날 때 특정 항목을 로드합니다. struct ContentView: View { var body: some View { NavigationView { VStack { NavigationLink(destination: DetailView()) { Text("onAppear() & onDisappear()") } } } } } struct DetailView: View { var body: some View {.. SWIFTUI/Grammar 2021. 5. 14. SwiftUI : Markups과 Documentation을 추가하는 방법 Markups과 Documentation Xcode에 코드를 작성하면서 코드를 Markup 하는 방법에 대해 알아보려고 합니다. 실제로 다른 개발자 혹은 자신을 위해서 코드에 섹션이나 메모를 하고 팀에서 일할 때 정말 좋은 Documentation을 만들 수 있습니다. 우선 아주 간단하게 뷰를 구성해주도록 하겠습니다. import SwiftUI struct DocumentationView: View { @State var data: [String] = [ "Text", "Slider", "Environment" ] @State var showAlert: Bool = false var body: some View { NavigationView { ScrollView { Text("서근개발블로그") Text.. SWIFTUI/Others 2021. 5. 13. SwiftUI : Picker / Picker Style / Section Picker 와 Section에 대해 알아보도록 합시다. Picker selection binding, label, content를 표시할 내용을 제공하여 Picker를 만듭니다. selection parameter를 현재 selection으로 표시할 값을 제공하는 바인딩된 속성으로 설정합니다. 레이블을 선택 도구에서 내용 선택 목적을 시각적으로 설명하는 보기로 설정한 다음 선택 도구에서 표시할 내용을 제공합니다. ForEach 간단하게 Picker와 ForEach를 사용하여 목록을 선택할 수 있는 피커 화면을 구성할 수 있습니다. struct ContentView: View { //학생 목록을 만들고 let students = ["서근", "희진", "미진", "슬기"] //State으로 값이 수정되도.. SWIFTUI/View layout 2021. 5. 13. 이전 1 ··· 14 15 16 17 18 19 20 ··· 28 다음 한국어 (기본) English Русский 日本語 👉🏻 잠깐만요! 이 글도 한 번 보고 가세요 이전글 다음글 티스토리툴바 서근 개발노트구독하기