일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ios
- UIKit
- withAnimation
- 접근성제어
- firebase
- view
- 최적화
- stateobject
- dataflow
- Concurrency
- toolbarvisibility
- Network
- combine
- arkit
- SwiftUI
- swift
- iphone
- state
- auth
- Animation
- Performance
- RxSwift
- GCD
- gesture
- 달력
- avsession
- CS
- 네트워크
- WWDC
- authentication
- Today
- Total
목록swift (30)
XLOG

저번 Animation 공부한 내용을 바탕으로 Camera Shutter 를 구현해 보았다. 우선 카메라 셔터 부터 시작을 해보자. struct ContentView: View { @State var buttonTapped: Bool = false var body: some View { ZStack { Color.black ZStack { // 외각 테두리 Circle() .stroke(lineWidth: 4) .foregroundColor(.white) // 내부 원 Circle() .foregroundColor(buttonColor) .frame(width: buttonTapped ? 56 : 60, height: buttonTapped ? 56 : 60) } .frame(width: 72, heig..

기본적으로 SwiftUI 에 애니메이션을 적용하기 위해 .animation(_:value:) 를 사용하거나 withAnimation() 을 사용했다. 1. 둘의 차이 우선 이 둘의 차이에 대해 먼저 확인을 해보자. animation(_:value:) 는? 먼저 .animation() 이다. 인스턴스 메소드로 some View 를 리턴한다. view를 리턴한다는 것은 viewModifier 로 생각하면 되는 것 같다. 변화를 추적할 값 V 의 변화를 감지, 그로 인해 영향을 받는 변수들을 animation 옵션에 따라 state 의 변화를 주어 해당 View에 애니메이션을 적용한다. 그렇다면 withAnimation은 ? withAnimation은 함수이다. 결과값을 Return 한다. 즉 결과값을 리턴을..

TDD(Test Driven Development) 는 테스트 주도 개발이다. 초기 공부를 시작하다보면 자연스럽게 접하게 되는 용어이다. 왜 그런걸까? Swift 를 공부하면서 XCTest를 알기전, View를 만들고 확인하고 내부 로직을 만들어 View 붙이고를 반복했다. 메인 페이지라면 크게 문제는 없었지만 프로젝트 규모가 커지고, 내부에 view들을 확인하기 위해 simulator 를 돌리고, 원하는 페이지까지 이동해서 확인하고, 문제가 있으면 수정해서 다시 로직을 수정하고를 반복했다. 가끔은 Playground 를 만들어 테스트 해보고 프로젝트에 적용하기도 했다. 상당히 비효율적이다. XCTest 를 사용하면 이와 같은 문제를 해결할 수 있다. 각종 테스트를 할 수 있는 프레임워크다. 프로젝트 생..

[참고] 이 글은 ARKit의 사용법 보단, AR Kit을 사용하기 위해 사전 지식에 대한 정리라는 점을 참고해주시기 바랍니다. 필요에 의해 ARKit에 대한 공부를 해봤다. 몇년 전부터 많이 들려오는 AR(Augmented Reality)인 증강현실, 현실 세계에 가상을 더한 컨텐츠, AR 뜻만 알아도 AR kit은 증강현실을 구현하는 프레임워크라는 것을 알 수 있다. 역시나 공식문서를 보면 2d, 3d 요소를 라이브뷰(카메라로 찍는 현실세계) 에 표현하는 증강현실을 위한 프레임 워크라고 한다. 여기서 우리는 라이브뷰, 즉 카메라로 부터 현실세계의 데이터를 수집해야 한다. QR code 스캐너에 관한 글을 작성할 때 처럼 session을 사용할 것이라는 느낌이 온다. session을 시작하게 되면 처음..

1. 배경 많은 취업 공고에 Autolayout 에 대한 이해를 기본 자격요건으로 적혀있는 경우가 많다. Autolayout 이 왜 중요할까? 이유는 간단한 것 같다. 2010년 이전엔 대부분이 비슷한 크기, 비슷한 비율의 모니터로 인터넷을 사용했다. 하지만 2010대에 다양한 핸드폰, 태블릿... IT 서비스를 즐길 수 있는 다양한 기기가 나왔으며, 그만큼 사이즈 또한 다양해졌다. 가로모드까지.... UIKit 의 경우 이전 포스팅에서도 얘기를 했었지만, 명시형 프로그래밍 언어이다. View 를 명시하고 추가할때, 사이즈도 추가를 해줘야 한다. 위에 사진을 보게 되면, 사이즈를 정한 View의 경우 시뮬레이터 상에서 우리가 확인할 수 있지만, 사이즈를 지정해주지 않은 View는 눈에 보이진 않는다. 하..

SwiftUI 만으론 QR Code Scanner를 만들 수 없다...... 그 이유는 UIKit Framework 가 필요하다. AVFoundation, AVCaptureMetadataOutputObjectsDelegate 를 사용하기 위해서...... 우선 AVFoundation 은 swift 에서 제공하는 Audio, Video 를 다루기 위한 frameworkd 다. 여기서의 핵심은 AVCaptureSession 을 사용하는 것이다. 디바이스로 부터 들어온 데이터를 출력해주는 세션, 즉 input 과 Output을 연결해주는 역할을 한다. 우리는 이 센션에 AVCaptureDeviceInput 을 Input으로 추가, 가져온 메타데이터를 위해 AVCaptureMetadataOutput 을 oupu..

작년 애플아카데미에서 프로젝트를 진행하면서 MVC, MVVM 아키텍쳐를 채택하고 자연스럽게 Model을 만들었다. Model을 만들었을 때 모델은 클래스로 하느냐, 구조체로 하느냐에 대한 논의를 많이 했었다. 그 당시 구조체는 값, 클래스는 참조 이렇게 단순하게만 생각했다. 그래서 당시 멘토 비비에게 물어봤더니 WWDC16 의 Understanding Swift Performance 를 추천해줬었다. 영상에서 처음 Struct 와 Class 가 메모리에 어떻게 할당하는지를 보여준다. Struct => Stack Class => Heap Stack 메모리는 push 와 pop 으로 동작하는 심플한 구조로 포인터는 맨 마지막을 가르키며 간단하게 동작을 한다. 하지만 힙은...? 사용되지 않는 메모리 공간을 ..

UIKit 에서 UIView 에 cornerRadius 를 주기 위해선 layer 에 속성값을 주고 clipToBound 를 해준다. 마치 View 를 Layer로 자르는 작업을 하는 듯... 그렇다면 이 Layer 는 무엇일까? CALayer 타입이다. CA 는 CoreAnimation 을 뜻한다. UIKit의 Core Animation 은 그래픽렌더링 및 애니메이션 인프라라고 한다. 그리고 Layer 는 우리의 View 가 Core Animation에서 작동하도록 만들어 주는 요소인 것 같다. 왜 UIKit은 Core Animation을 사용할까? 우리의 UI 는 단순히 view를 보여주기만 하는 것이 아닌 사용자와의 인터랙션도 일어난다. 다들 알고 있겠지만 main thread 는 UI를 담당하고 ..

작년에 SwiftUI를 공부하면서 캘린더를 만들어야 하는 상황이 있었다. 단순히 버튼을 눌러 값을 변화시키는 것이라면 조금은 간단할 수 있지만, 기본 제공 달력 처럼 Scroll Animation 효과가 있어야 한다. 기본적인 Infinity Scroll의 경우 한 방향으로 지속적으로 작동, 값을 추가만 하면 된다. 하지만 달력의 경우 좌, 우 즉 값이 추가되거나 감소되거나 해야한다. 무작정 사람이 스크롤 할 만한 범위의 값을 불러와서 만들기는 싫었다. 내가 생각한 아이디어는 3주치의 배열을 계속해서 바꿔주는 것이다. Paging을 사용하게 되면 쉽게 될 줄 알았지만 값의 변화에 따른 View의 재생성되는 과정이 매끄럽지 못했다. 그 당시 생각할 수 있었던 아이디어는 HStack 의 특성을 이용하여 of..

작년 Apple Developer Academy 에서 iOS 에 대해 처음 공부를 했다. 마지막 프로젝트에서 팀원들과 SwiftUI 를 쓸 것이냐? UIKit을 쓸 것이냐 에 대한 이야기를 나눴었다. 큰 이견없었다. 다들 현업에서 UIKit 을 쓰고 있으니, 당장 1~2년 안에 취업을 할 생각을 가지고 있다면 UIKit 을 하는게 좋겠다 란 얘기가 나와서 UIKit을 썻었다. 나의 경우엔 이전 프로젝트에서 UIKit을 거의 안써봤기에 UIKit을 써보고 싶다는 생각을 했었기에 좋았다. 하지만 요즘 혼자 공부를 하면서 저런 이유말고, 왜 UIKit인가? 왜 SwiftUI인가? 에 대한 이유를 찾게 됐다. 그렇다면 SwiftUI 는 뭘까? wwdc19 SwiftUI essentials 를 보면 좋은 UI를 ..