반응형

ios 17

SwiftUI - ConfirmationDialog 알아보기, ActionSheet Deprecated

ActionSheet 를 사용하는데 deprecated 되었다고 confirmationDialog를 사용하라고 합니다. 바로 알아봅시다. ConfirmationDialog 가장 기본적인 confirmationDialog 입니다. 첫번째 인자로 titleKey가 들어가고 isPresented 에 바인딩값을 연결해준 뒤 action 클로저 안에 우리가 평소에 쓰는 Button을 쭉 나열하면 됩니다. struct ContentView: View { @State var isPresented = false var body: some View { Button(action: { isPresented = true }) { Text("사진 불러오기") .padding() } .confirmationDialog( "제목"..

ios/swiftUI 2022.07.26

SwiftUI - Preview를 유용하게 사용하는법, previewLayout, 가로모드 Preview

SwiftUI의 Preview는 따로 앱을 빌드하여 시뮬레이터를 실행하지 않고도 코드를 입력하면 바로바로 눈에 보이도록 해주는데요. 이로 인해 더욱 더 생산성 높은 작업을 할 수 있도록 도와줍니다. SwiftUI에서 하나의 ViewController 같은 화면이 아닌 하나의 Component View를 만드는 경우가 많습니다. 하지만 이럴 때도 Preview는 선택한 기기의 화면으로 보입니다. 이런 경우나 여러가지의 형태(가로모드, 세로모드) 등등 을 한눈으로 확인 할 수 있도록 해주는 Preview의 기능에 대해 알아봅시다. 1. PreviewLayout struct ContentView_Previews: PreviewProvider { static var previews: some View { Con..

ios/swiftUI 2022.07.02

SwiftUI - Color 16진수로 표기된 색상 사용하기, hex 색상 사용하기

일반적으로 Assets에 고정된 색상을 등록하고 사용하지만 가끔은 서버에서 받은 hex값을 사용하여 색상을 표현해야 하는 경우가 있다. 역시 일반적인 방법으로 Color를 Extension 하여 새로운 이니셜라이저를 추가해준다. extension Color { init(hex: String) { let hex = hex.trimmingCharacters(in: CharacterSet.alphanumerics.inverted) var int: UInt64 = 0 Scanner(string: hex).scanHexInt64(&int) let a, r, g, b: UInt64 switch hex.count { case 3: // RGB (12-bit) (a, r, g, b) = (255, (int >> 8) ..

ios/swiftUI 2022.07.02

SwiftUI - 탭하여 키보드 숨기기

iOS 의 키보드를 보면 기본적으로 키보드를 내리는 키가 있지만 많은 이용자들이 화면을 탭했을 때 키보드가 내려가는 동작이 익숙하다. 아주 간단하게 SwiftUI에서 구현하는 방법이 있다. 1. Extension 선언 extension UIApplication { func addTapGestureRecognizer() { guard let window = windows.first else { return } let tapGesture = UITapGestureRecognizer(target: window, action: #selector(UIView.endEditing)) tapGesture.requiresExclusiveTouchType = false tapGesture.cancelsTouchesInV..

ios/swiftUI 2022.07.01

Swift - 앱 버전, 앱 빌드번호, 앱 이름, 앱 번들 Id 얻는 방법

extension Bundle { var appName: String { return infoDictionary?["CFBundleName"] as! String } var bundleId: String { return bundleIdentifier! } var versionNumber: String { return infoDictionary?["CFBundleShortVersionString"] as! String } var buildNumber: String { return infoDictionary?["CFBundleVersion"] as! String } } 사용할 때에는 아래와 같이 사용합니다. let str = "\(Bundle.main.appName) v \(Bundle.main.versio..

ios 2022.06.22

Terminal에서 바로 Xcode 프로젝트 파일 실행하기

보통 Git이나 Cocoapods 등 terminal을 켜서 특정 작업을 진행한 뒤 다시 Xcode를 실행하기 위해 Finder를 다시 열거나 Xcode를 실행한다. 만약 Cocoapods을 사용하는 프로젝트인 경우 .xcworkspace 파일을 실행해야 하고 그렇지 않은 경우 .xcodeproj 을 실행하게 된다. open MyProjectName.xcodeproj open MyProjectName.xcworkspace 위 명령어를 입력해 Cocoapods의 사용 유무에 따라 직접 입력해 줄 수도 있다. 하지만 xed 명령어를 사용하면 더욱 더 생각할 필요 없이 바로 실행이 가능하다. Xed 사용 xed . 해당 명령어를 입력하면 만약 xcworkspace 파일이 존재할 경우에는 해당 파일을 우선적으로..

ios/Xcode 2022.05.11

SwiftUI에서 UIKit의 Alert 사용하기

1. 왜 SwiftUI의 Alert이 아닌 UIKit의 Alert을 사용하는가? SwiftUI의 Alert 먼저 SwiftUI에서 제공되는 Alert을 사용하기 위한 필요한 요소에 대해 알아보자. 1. alert이 열려있는지 닫혀있는지에 대한 정보를 담은 Bool 타입의 State 변수를 선언한다. 2. View에 alert을 체이닝 형식으로 선언한 후 아까 선언한 State 변수를 연결한다. 3. View의 alert 클로저에 Action처리를 포함한 Alert(View)을 추가한다. struct AView: View { // 1 @State var isShowingAlert = false var body: some View { VStack { Button(action: { isShowingAlert ..

ios/swiftUI 2022.05.10

Swift - Combine의 Publisher 알아보기 Just, Future, Fail, Empty, Deferred, Sequence

Publisher #Combine #Publisher Just 가장 단순한 형태의 Publisher 입니다. 에러 타입은 항상 Never 입니다. Just((0...5)) .sink { value in print(value) // 0...5 } Future 일반적으로 Publisher의 처리를 sink 라는 구독을 형태로 많이 처리하게 되는데 이 때 클로저를 전달하는 과정에서 콜백 기반의 completion 핸들러를 사용하게 되는데 Futrue를 통하여 더욱 깔끔한 코드 작성이 가능해 집니다. let myFuture = Future { promise in promise(.success(10)) } myFuture.sink { value in print(value) // 10 } URLSeesion 이나 ..

ios/Combine 2022.02.08

Swift - Combine 요약 (Publisher, Operator 종류)

Combine이 가지고 있는 기능들을 정리해보았습니다. 앞으로 해당하는 글을 계속 쓰면서 업데이트 할 예정입니다. 업데이트를 하게되면 해당 설명 아래에 링크를 추가하겠습니다! Publisher 종류 Just: 위에서 본것과같이 가장 단순한 형태의 Publsiher로 에러타입으로 Never를 갖습니다. Promise: Just와 비슷하지만 Filter Type을 정의할 수 있습니다. Fail: 정의된 실패타입을 내보냅니다. Empty: 어떤 데이터도 발행하지 않는 퍼블리셔로 주로 에러처리나 옵셔널값을 처리할때 사용됩니다. Sequence: 데이터를 순차적으로 발행하는 Publisher로 (1…10).Publisher로 이에 해당합니다. ObservableObjectPublisher: SwiftUI에서 사용..

ios/Combine 2022.02.04

SwiftUI에서 UIkit, StoryBoard 사용하기

SwiftUI에서 UIkit 사용하기 SwiftUI에서 UIkit를 사용하기 위해서는 UIViewRepresentable을 채택하는 struct를 구현하면 됩니다. UIViewRepresentable을 채택하게 되면 필수로 구현해야 하는 makeUIView와 updateUIView가 있고 UIViewType을 원하는 UIkit의 View로 변경하면 됩니다. UIViewRepresentable // 구현 struct SwiftUIView: UIViewRepresentable { func makeUIView(context: Context) -> UIViewType { let view = UIViewType() return view } func updateUIView(_ view: UIViewType, con..

ios/swiftUI 2022.02.04
반응형