apple/SwiftUI, Combine 28

[iOS] 화면 스크린샷 및 녹화 감지 (feat. SwiftUI)

화면 스크린샷 및 녹화 감지 ✅ 화면 녹화 및 스크린샷 감지에 대해서 알아봅시다. 우선 화면 녹화 및 스크린샷은 NotificationCenter를 통해 알 수 있습니다. // 화면캡쳐 NotificationCenter.default.publisher(for: UIScreen.capturedDidChangeNotification) // 화면녹화 NotificationCenter.default.publisher(for: UIApplication.userDidTakeScreenshotNotification) ✅ 코드 import SwiftUI struct ContentView: View { var body: some View { ZStack { MainView() // 메인 컨텐트 뷰 BlockView() ..

[SwiftUI] ViewModifier

ViewModifier ✅ 공식문서 https://developer.apple.com/documentation/swiftui/viewmodifier Apple Developer Documentation developer.apple.com ✅ 공석문서의 일부 ✅ 이를 통해서 중복되는 코드를 쉽게 줄일 수 있습니다. import SwiftUI struct ContentView: View { var body: some View { VStack(spacing: 50){ Text("Hello, world!") .modifier(MyRoundedText()) // modifier를 활용 Text("Hello, world!") .myRoundedTextStyle() Image(systemName: "pencil") ..

[SwiftUI] LazyVGrid

LazyVGrid SwiftUI에 대해서 알아가고 있는데, UIKit에 비해서는 아직 어렵다.UIKit이라면 금방 했을탠데, 아직까지는 숙련도가 낮은 것 같아서 어렵다. 적응하면 쉬워지겠지 iOS 14 혹은 15를 타겟으로 개발하고 있는데 SwiftUI가 80프로까지는 금방 만드는데, 결국 UIKit을 사용해야하는 시점에서는 점점 손이 많이가기 시작한다.SwiftUI가 시간이 흐르면서 더 발전하겠지 ✅ 코드import Foundationimport SwiftUIenum LayoutType: CaseIterable { case table, grid, multiple}extension LayoutType { // 레이아웃 타입에 대한 컬럼이 자동으로 설정되도록 한다 var columns : ..

[SwiftUI] menu (feat. Picker)

menu (feat. Picker) ✅ 메뉴에 대해서 알아보자.코드 베이스로 코드 작성하고 부터는 스토리보드를 잘 사용안하는데, 어느날 보니까 menu를 사용할 수 있는 버튼이 들어왔다.  ✅ 코드import SwiftUIlet myPets = ["멍멍이 🐶", "야옹이 🐯", "찍찍이 🐹"]struct ContentView: View { @State private var shouldShowAlert : Bool = false // alert를 띄우기 위함. @State private var myText : String = "" // 텍스트 @State private var selected : Int = 0 // 선택한 인덱스 var body: some View..

[SwiftUI] Picker, segmentedStyle (feat. enum CaseIterable)

Picker, segmentedStyle (feat. enum CaseIterable) (feat. enum CaseIterable)의 경우에는 따로 enum에 대해서 사용하는 방식을 포스팅 할 예정이지만, 그 전에 어떻게 사용하는지 간략하게 사용법? 정도는 나와있어서 참고해보면 좋다. 이번에는 코드를 한번 보자! ✅ Picker, segmentedStyle에 대해서 알아보자. import SwiftUI struct ContentView: View { @State private var selectionValue = 0 let myColorArray = ["레드", "그린", "블루"] func changeColor(index: Int) -> Color { switch index { case 0: retu..

[SwiftUI] Toast, popup

Toast, popup ✅ 이번에는 오픈소스를 활용해서 toast와 popup을 하는 작업을 진행이전에 플러터나 안드로이드 개발할 때, 주로 사용하던 UI인데, iOS에도 비슷하게 구현할 수 있다고 해서 공부해봄. ✅ 오픈소스https://github.com/exyte/PopupView GitHub - exyte/PopupView: Toasts and popups library written with SwiftUIToasts and popups library written with SwiftUI. Contribute to exyte/PopupView development by creating an account on GitHub.github.com 오픈소스에서 SPM을 지원한다고한다.처음 공부할때는 최근..

[SwiftUI] TextField, SecureField

TextField, SecureField ✅ UIKit에서는 익숙했던 것들인데, SwiftUI에서는 낯설다. 여기서 주의할 점은 TextField의 text는 Binding이라서 @State와 $에 주의하자. TextField는 우리가 기존에 알던 TextField와 같다. SecureField는 password를 입력할 때, 글자가 보이지 않게끔 검은색 원으로 숨겨주는 필드이다. 코드가 무척 간단하니까 쓱 읽어보자! ✅ 코드 import SwiftUI struct ContentView: View { @State private var username: String = "" @State private var password: String = "" var body: some View { VStack(spac..

[SwiftUI] ButtonStyle

ButtonStyle ✅ 버튼 스타일에 대해서 알아보자 이건 진짜 어렵지가 않다. 정말정말 E A S Y 해 ! Configuration은 상속받아 들어오는 것의 상태를 받아서 쓰는것 ✅ MyBlurButtonStyle import SwiftUI struct MyBlurButtonStyle: ButtonStyle { var color : Color // Configuration 위에서 상속받는 속성 그대로 사용할 수 있게 해줌 func makeBody(configuration: Configuration) -> some View { configuration .label .font(.system(size: 20)) .foregroundColor(Color.white) .padding() .background..

[SwiftUI] QRcodeReader

QRcodeReader ✅ QRcodeReader를 알아보자. 코드는 어렵지 않다. 눈여겨 볼 점은 하나의 파일에서 여러개의 뷰를 생성하는 것을 볼 수 있겠다 🟠 아래는 오픈소스 !_! https://github.com/twostraws/CodeScanner GitHub - twostraws/CodeScanner: A SwiftUI view that is able to scan barcodes, QR codes, and more, and send back what was found. A SwiftUI view that is able to scan barcodes, QR codes, and more, and send back what was found. - GitHub - twostraws/CodeScan..

[SwiftUI 3.0] State/ Binding / EnvironmentObject

State/ Binding / EnvironmentObject ✅ 오늘은 이 세가지에 대해서 알아보자. @State: 값이 변경되었을 때, 화면을 다시 보여주어야 할 때. @Binding: state같은 친구들을 view - view 간에 공유해야 하는 경우. @EnvironmentObject: parent로 child(하위) view에 공유해야 하는 경우. 우선 State와 Binding에 대해서 이해해보자. ✅ 예시 코드 struct FirstView: View { @State var appTitle = tabIndex.first.rawValue @State var count = 0 enum tabIndex: String { case first = "1번뷰 입니다." case second = "2번뷰..