IOS
-
주말동안 알아본 Secure Enclave앱등이에게 살충제를 뿌린다./iOS 2022. 1. 2. 23:29
출처: https://www.andyibanez.com/posts/cryptokit-secure-enclave/ Secure Enclave 암호화 기능만을 수행하는 iOS(OS)에 완전히 독립된 하드웨어. 생체인식 기능이 탑재된 iPhone 5S부터 가능. 터치바 있는 맥북도 가능. Touch ID, Face ID 인식에 필요한 수학적 계산도 Secure Enclave에서 일어난다. Touch ID데이터, Face ID데이터가 Secure Enclave에 저장되는 것은 아님! iOS가 Touch ID, Face ID 데이터로 연산을 한 뒤 이 데이터를 가지고 Secure Enclave에 물어본다. 이거 맞아?? Yes라고 대답하면 디바이스의 잠금이 해제된다. Security Framework, Crypt..
-
App Extension과 Host App의 코드를 공유하고 싶다면?앱등이에게 살충제를 뿌린다./iOS 2019. 4. 8. 15:33
HostApp의 코드를 사용하고 싶다? 원칙적으로 불가능하다. Host App의 코드를 사용한다는 말은 HostApp과 Extension에서 같은 코드를 사용하고 싶다는 말과 같다. 이를 가능하게 해주는 것은 공통코드를 Framework로 만들어서 각각 target에 embd하는 것이다. 예를 들어, 이미지 필터기능을 사용하는 앱이라면 필터기능에 대한 코드를 Framework로 만들고 Hostapp과 Extension에 embed해서 사용하는 것이다. 내생각: 필수코드 또는 필수기능이 아니라면 이렇게까지..? 출처: Using an Embedded Framework to Share Code (https://developer.apple.com/library/archive/documentation/Gener..
-
[CoreAnimation] Ch19. Interactive UINavigationController TransitionsRay Wenderlich/Core Animation 2018. 12. 15. 21:06
19장 Interactive UINavigationController Transitions Intro사용자의 행동에 반응하는 트랜지션을 구현해보자. Pan제스쳐를 활용할 예정이다. Creating an interactive transition트랜지션이 발생할 때, UINavigationController는 delegate에 애니메이션 컨트롤러가 있는지 물어본다. 이건 이미 알고 있던 것 하지만 추가로 interactive controller도 있는지 물어본다! AnimationController와 Interactive Controller는 하나의 클래스로 구현하는 것이 편하다. UIViewControllerAnimatedTransitioning, UIViewControllerInteractiveTrans..
-
[CoreAnimation] Ch16. Replicating Animations (CAReplicatorLayer를 복제하여 애니메이션하기)Ray Wenderlich/Core Animation 2018. 9. 18. 01:06
16장 Replicating Animations Intro CAReplicatorLayer에 대해서 알아본다. (superclass: CALayer) 레이어를 복제할 수 있다. 근데 왜 복제해야해? 라는 질문 단순히 보이는 것만 복제하는 것이 아니다. 복제하는 과정에서 레이어간 약간의 차이점을 발생시켜, 엄청난 효과를 가져올 수 있다. 그리고 무엇보다, 복제한 레이어의 애니메이션마다 차등 delay를 줄 수 있다. Ex) 0.2의 delay를 준다고 가정하면 layer1은 0.2초 뒤, layer2는 0.4초 뒤, layer3은 0.6초 뒤. 애니메이션 시작 이번 챕터는 1. Iris(Siri 짭퉁)가 말하는 음성 신호를 시각적 애니메이션으로 표현 2. 사용자가 입력하는 음성의 크기에 따른 시각적 애니메..
-
[GCD] DispatchQueue.. main큐와 gloabal큐? sync와 asnyc? 궁금증 해결해보자.앱등이에게 살충제를 뿌린다./Swift 2018. 9. 4. 16:22
많은 언어에서 제공하는 비동기 처리 방식.Swift(또는 objc)에는 GCD가 있다. iOS개발을 하다보면, 아래 코드를 많이 보고, 또 사용할 수 밖에 없다.DispatchQueue.main.async {//...} 구글에 GCD를 쳐보면 무수히 많은 정리문서가 존재한다. (심지어 한글로 포스팅한 글도 엄청 많음)그래서 난 나만의 정리를..위해서 포스트를 작성한다. 아래 코드의 결과를 정확히 예측할 수 있다면, 학습이 되었다고 판단하겠다. UIViewController의 viewDidLoad()에서 작성한 코드니까, 아래 코드는 메인스레드에서 작동한다는 전제가 있다. override func viewDidLoad() { super.viewDidLoad() DispatchQueue.global().sy..
-
[CoreAnimation] Ch9. Animation Keys and Delegates (레이어 애니메이션 Delegate, Key를 사용하기)Ray Wenderlich/Core Animation 2018. 8. 1. 20:58
9장 Animation Keys and Delegates Intro UIView animation을 사용할 때, 애니메이션을 중지할 수 없었다. 하지만 Core Animation에선 모든게 가능!layer의 애니메이션은 멈출 수 있다. 더불어 delegate를 설정하여 애니메이션의 시작과 끝(or interrupted)에 대한 핸들링도 가능하다. Introducing animation delegates CAAnimationDelegate에는 두 메소드가 있다. func animationDidStart(_ anim: CAAnimation)func animationDidStop(_ anim: CAAnimation, finished flag: Bool) Key-value coding compliance CAA..
-
CALayer의 position과 anchorPoint의 관계앱등이에게 살충제를 뿌린다./iOS 2018. 8. 1. 19:19
CALayer의 position, anchorPoint UIView의 layer프로퍼티. CALayer타입이고 position을 갖고 있습니다. 파란뷰위에 노란뷰를 올렸습니다.이 때, 디폴트로 노란뷰.frame은 (0, 0, 100, 100)을 갖습니다. 그리고 노란뷰.layer.position의 값은 (50, 50)입니다. 노란뷰.center와 같은 값이죠. 그렇다면 이렇게 생각할 수 있습니다. 아~ UIView.layer.position은 UIView.center를 의미하는 거구나. 결론은 아닙니다. 그렇다면 center라고 네이밍하지, position이라고 하진 않았겠죠? CALayer에는 anchorPoint라는게 있습니다. 타입은 CGPoint고 디폴트는 (0.5, 0.5)입니다. x와 y의 값..
-
RxSwift - Dispose란? (Disposable, DisposeBag)Ray Wenderlich/RxSwift 2018. 2. 6. 13:10
Dispose and Terminating ~ P.66 Dispose and terminatingObservable은 subscribe가 있기 전까지 아무일도 하지 않는다는걸 떠올리자.Subscription이 있어야 비로소 Observable은 이벤트를 발생시키고 complete 또는 error이벤트가 발생하기 전까지 계속 next이벤트를 발생시킨다. subscription을 중단하는 방법이 있다. 코드를 보자.1. String의 Observable을 생성했다.2. subscribe를 시작한다. 이번에는 subscription이라는 로컬변수에 subscribe()메소드의 리턴타입인 Disposable이 저장되었다.3. 발생하는 이벤트를 모두 로깅한다. subscription을 명시적으로 중단하기 위해 d..