
이전에 커스텀한 버튼을 만든 적이 있었는데요 저는 제약조건을 수정해서 확장시켰는데 깃을 보다가 Ale Patron이 분의 방식이 좋아 보여서 기록해놓으려 합니다. 기존 코드에서 맘대로 조금 수정을 했습니다. 버튼이 정중앙에 배치되어있는데 오른쪽 하단으로 옮겼고 색상을 변경했습니다. 버튼의 텍스트와 함수명을 변경했습니다. 버튼 사이즈 상수는 ButtonPanelView에서만 사용되고 있어 클래스 내부로 들고 왔습니다. (내부로 들고 오면서 접근 제어자 fileprivate에서 private로 변경했습니다) 프로토콜은 클래스만 사용할 수 있도록 class로 수정했습니다. 버튼에 쉐도우 레이어는 제거했습니다. 그럼 다시 시작. class ButtonPanelView: UIView { private let bu..

오늘은 레이아웃을 다루는 메서드에 대해서 (아래 링크 의역 및) 정리해보려 합니다. layoutIfNeeded vs setNeedsLayout 먼저, iOS앱이 시작되면 시스템 객체는(UIApplication) 메인 스레드에서 메인 런 루프를 돌기 시작합니다. 메인 런 루프는 (예: 유저의 터치) 이벤트를 처리하고 뷰 기반 인터페이스에 대한 업데이트를 처리합니다. 터치, 위치 업데이트, 모션 및 멀티 미디어 제어와 같은 이벤트가 발생하면, 메인 런 루프는 이벤트에 대한 적절한 트리거를 찾아서 적절한 메서드를 호출하는 등 작업을 수행합니다. 이때 모든 이벤트가 처리되고 제어(control)가 메인 런 루프로 돌아가는 시점에 업데이트할 때가 업데이트 주기입니다. 여기서 나오는 업데이트 주기가 아래에서 말하는..

UIViewPropertyAnimator UIViewPropertyAnimator는 iOS10에 소개된 클래스입니다. 이는 뷰의 변경 사항에 대해 애니메이션을 적용하고 해당 애니메이션을 동적으로 수정할 수 있는 클래스입니다. 또한 frame, center, alpha, transform를 사용해 인터렉티브 한 애니메이션을 가능하게 해 주며 타이밍을 제어할 수 있습니다. 예를 들어 뷰를 서서히 사라지게 하고 싶다면 애니메이션 블록에서 alpha 값을 1에서 0으로 변경해주면 됩니다. 애니메이션을 추가하고 싶다면 add 메서드를 사용하여 원래 애니메이션이 시작된 후 애니메이션 블록을 추가할 수도 있습니다. UIViewPropertyAnimator를 직접 사용해 봅니다. 아래 프로젝트는 슬라이더의 값에 따라 ..
애니메이션 옵션들 중 자주 사용하는 것들curveLinearcurveEaseIncurveEaseOutcurveEaseInOut // https://developer.apple.com/documentation/uikit/uiview/animationoptions에 살펴보면 더 많은 옵션들이 나와 있습니다. curveLinear 애니메이션 커브는 애니메이션이 지속되는 동안 균등하게 애니메이션을 발생시킵니다. curveEaseIn 애니메이션이 느리게 시작된 다음 애니메이션 진행 속도가 점점 빨라집니다. curveEaseOut 애니메이션이 빠르게 시작되고 완료되면 느려집니다. curveEastInOut 애니메이션을 느리게 시작하고 빠르게 가속화 한 다음 애니메이션이 완료되기 전에 느리게 합니다. 속도 그래프
사용할 CGAffineTransform는 구조체입니다. (https://developer.apple.com/documentation/coregraphics/cgaffinetransform) 가장 큰 특징은 뷰의 프레임을 계산하지 않고 CGAffineTransform을 사용해 2D 그래픽을 그릴 수 있습니다. 간단하게 사용 가능하기 때문에 자주 사용하곤 합니다. CGAffineTransform에서 사용되는 아핀 변환 행렬은 2D 그래픽을 그리는데 사용되는 행렬입니다. 또한 아핀 변환 행렬은 객체를 회전, 크기 조절, 변환 또는 기울기를 위해 사용됩니다. 아핀 변환을 직접 생성할 필요는 없고 구조체에 있는 함수를 호출해 뷰를 이동(translate), 조절(scale), 회전(rotate)합니다. Scale..
UIView는 애니메이트 되는 프로퍼티를 정의해놨습니다.frameboundscentertransformalphabackgroundColor 익숙한 이 프로퍼티들을 애니메이트 가능하게 하려면 애니메이션 클로저에서 value 값을 변경해주면 됩니다. 뷰를 생성해줍니다. default가 흰색이니 잘 보이게 black으로 설정하고 view에 내가 만든 myView를 넣어줍니다. #1 먼저 withDuration과 animations이 있는 메서드를 사용해보겠습니다. 클로저가 축약 가능하니 #1 과 #2가 같은 동작을 합니다. (저는 편하게 축약형으로 #2로만 작성하겠습니다. 편하신 방법으로 사용하시면 될 것 같습니다.) 검은색 뷰가 2초 동안 흰색으로 바뀝니다. 정의된 프로퍼티 중에 원하는 프로퍼티의 값을 변경..
- Total
- Today
- Yesterday
- 스위프트
- Deep learning
- 독서
- leetcode
- objc
- 책
- 스위프트UI
- 책 후기
- wwdc
- 알고리즘
- 문자열
- objective-c
- swiftUI
- Xcode
- RX
- stanford SwiftUI
- ARC
- 책 추천
- Algorithm
- ReactiveX
- Animation
- 애니메이션
- 머신러닝
- string
- ios
- swift5
- iOS SwiftUI
- rxswift
- SWIFT
- 딥러닝
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |