일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 백준
- 프로그래머스
- UIKit
- 스터디
- flutter
- Masil
- xml
- process
- ImageSlider
- 오늘의 색상
- WidgetTree
- Swift
- flutter #state # stateful #stateless
- SwiftUI
- stanford
- MVVM
- collectionView
- colorofdays
- 청년취업사관학교후기
- 프로젝트회고
- 새싹후기
- 코딩테스트
- xcode
- 스위프트
- 알고리즘
- CS193p
- UserDefault
- 조건문
- IOS
- GIT
- Today
- Total
목록SwiftUI (10)
개발을 시작하는 이야기

강의 보기 : YouTube :: Stanford URL과 Image를 Drag & Drop 이모지 외에도 배경을 Drag & Drop 할 수 있기 때문에 URL이나 Image가 드롭되었을 때 이를 받을 수 있어야 한다. private func drop(providers: [NSItemProvider], at location: CGPoint, in geometry: GeometryProxy) -> Bool { var found = providers.loadObjects(ofType: URL.self) { url in document.setBackground(EmojiArtModel.Background.url(url)) } if !found { found = providers.loadObjects(ofTy..

강의 보기 : YouTube :: Stanford Collections of Identifiable Identifiable A class of types whose instances hold the value of an entity with stable identity. 인스턴스가 안정적으로 구분될 수 있는 엔티티 값을 가지도록 하는 타입의 클래스 func choose(_ card: Card) { if let index = cards.firstIndex(where: { $0.id == card.id }) { cards[index].isFaceUp = true } } Color vs UIColor vs CGColor Color color-specifier : foregroundColor(Color.gree..

강의 보기 : Youtube :: Stanford rotation3DEffect 카드를 선택했을 때 fade 효과나 scale 같은 효과가 아닌, 카드를 뒤집는 효과를 주기 위해 Cardify의 ZStack에 rotation3DEffect 효과를 주었다. 뒤집는 효과를 주기 위해 axis의 y축에만 효과를 주었다. 카드는 정상적으로 뒤집을 수 있지만 다른 곳에서 문제가 발생했다. 카드를 뒤집기 시작하는 순간부터 카드가 미처 다 돌아가지 않았음에도 이모지가 서서히 나타나기 시작하는 문제가 발생했다. 이는 이모지를 보여주는 content를 opacity효과를 주면서 (isFaceUp ? 1:0)의 변화에 의존하기 때문이다. struct Cardify: ViewModifier { var isFaceUp: Bo..

강의 보기 : Youtube :: Stanford Protocol 특정 기능을 수행에 필요한 필수적인 속성이나 메서드를 정의한다. protocol Moveable { func move(by: Int) var hasMoved: Bool { get } var distanceFromStart: Int { get set } } struct PortableThing: Moveable { func move(by: Int) { print("\(by)만큼 움직입니다") } var hasMoved var distanceFromStart } 프로토콜은 또 다른 프로토콜을 따를 수 있다. protocol Moveable { var hasMoved: Bool { get } } protocol Messagable: Moveab..

강의 보기 : Youtube :: Stanford @State, @Binding @State는 단어 그대로 현재 상태를 나타내는 속성으로, 뷰의 어떤 값을 저장하는 데 사용된다. 현재 뷰 UI의 특정 상태를 저장하기 위해 만들어진 것이기 때문에 보통 Private로 지정하여 사용한다. @State 속성의 프로퍼티 값은 재 할당을 하더라도 변경되지 않는데 @Binding 변수를 통해서 변경이 가능하다. @Binding은 단어 그대로 구속력 있는, 묶여 있다는 뜻으로, @State 속성으로 선언된 프로퍼티와 묶여 있다고 생각하면 된다. @State는 주가 되는 뷰에 선언을 해주고, 선언된 프로퍼티를 다른 뷰에서 사용하기 위해서는 @Binding을 사용한다. 그리고 사용 시에는 $를 앞에 붙여주어 Bindin..

강의 보기 : Youtube :: Stanford 이번 강의에서 주된 내용은 Enum과 Optional에 대한 이야기 Enum 값타입으로 관련 데이터를 가지고 있을수 있다. enum의 상태 체크는 switch를 이용한다. break는 아무 일도 하고 싶지 않을 때 사용한다. default는 기본값에 해당하는, 케이스가 없는 경우 사용한다. if문의 else 와 같은 느낌 switch에서 열거형을 case로 구분할때, 튜플에서 label을 추가해서 해당 값에 접근할 수 있다. 저장프로퍼티는 가질수 없고, 함수 사용은 가능하다. CaseIterable를 이용해서 모든 타입에 접근할 수 있다. enum A: CaseIterable { case a case b case c } for e in A.allCases..

강의 보기 : Youtube :: Stanford MVC : UIKit 기반의 디자인 패턴 MVVM : SwiftUI를 위한 디자인 패턴 각각의 디자인 패턴에 대한 설명은 일전에 작성해둔 글의 링크로 대체한다. Struct와 Class Struct Class Value type Reference type Copied when passed or assigned Passed around via pointers Copy on write Automatically reference counted Functionak programming Object-oriented programming No inheritance Inheritance (single) "Free" init initializes All vars "Fr..

강의 보기 : YouTube :: Stanford struct ContentView: View { var body: some View { HStack { ZStack { RoundedRectangle(cornerRadius: 20.0) .stroke(lineWidth: 3) Text("Hello, CS193p!") } ZStack { RoundedRectangle(cornerRadius: 20.0) .stroke(lineWidth: 3) Text("Hello, CS193p!") } ZStack { RoundedRectangle(cornerRadius: 20.0) .stroke(lineWidth: 3) Text("Hello, CS193p!") } ZStack { RoundedRectangle(cornerR..

강의 보기 : YouTube :: Stanford 12분까지는 오리엔테이션 및 제작할 프로젝트에 대한 설명 15분까지는 Xcode에 대한 설명 및 설치 21분까지 프로젝트 생성에 대한 설명이다. 33분까지가 생성된 파일과 Preview화면, Assets, Project 파일들에 대한 설명들이다. 기본기는 이미 알고있다거나, 다시 리마인드로 듣는다면 33분부터 봐도 될 듯하다. 물론 나는 처음부터 시청. SwiftUI 상태 기반 프레임워크로 뷰의 Reference를 가져오거나 뷰를 임의로 수정할 수 없음. struct ContentView: View { var body: some View { Text("Hello, world!") .padding() } } some은 Opaque Type, 불투명한 타입..

이제 막 Swift 코딩에 익숙해지려고 하는 찰나 너무나도 UIKit에 익숙해져 있지만 새로 나온 SwiftUI도 알아야 하기 때문에 SwiftUI에 대한 공부를 시작해볼까 한다. SwiftUI는 2019 WWDC에서 처음 소개되었는데 기존의 UIKit을 이용한 개발과는 상반된 개념을 갖고 있다고 한다. 기존에는 스토리보드를 활용하여 화면의 구축과 흐름을 구성하고, ViewController에서 로직을 구현했다면, SwiftUI에서는 Swift 언어만으로 사용자 인터페이스를 구현할 수 있게 되었다. 물론 기존에도 가능은 했지만 더 간편하고 속도도 빨라졌다. SwiftUI의 특징 선언적 구문(Declarative syntax) 단순하면서도 직관적인 구문을 이용하여 화면을 구성할 수 있게 해준다. 기존 U..