학습활동 (15) 썸네일형 리스트형 Swift Concurrency I Coroutine 서브 루틴을 일시 정지하고 재개할 수 있는 프로그래밍 참고하기 좋은 블로그 - Swift Async-Awiat과 Kotlin Coroutine 비교 Swift Concurrency 병렬 프로그래밍과 비동기 코드를 사용하는 프로그램은 한번에 여러 작업을 수행할 수 있음 Swift안에서 Concurrency 모델은 스레드에서 구축하지만 스레드와 직접 상호 작용하지는 않음 → 비동기 함수가 Blocking이 되면 시스템에 맡김 → 비동기 함수가 다시 resume되면 해당 함수가 어느 스레드에서 실행될지는 보장되지 않음 → 비동기 함수가 Blocking 시 실행 중이던 스레드를 포기할 수 있게 되고, 해당 스레드는 다른 비동기 함수를 실행할 수 있음 이 개념은 코루틴(Coroutine) 에서 .. User Notifications User Notifications 서버에서 사용자 기기로 알람을 푸시하거나 앱의 로컬에서 알람을 표시→ 원격 알림의 경우 : 서버에서 푸시 알림을 생성하여 APNs(Apple 푸시 알림 서비스)가 사용자의 기기로 알림 전달 → 로컬 알림의 경우 : 알림 컨텐츠를 생성하고 이를 전달하는 트리거 조건을 지정 알림은 경고를 표시하거나, 소리를 재생하거나, 앱 아이콘에 배지를 지정할 수 있음 사용자 기기에서 앱의 실행 여부와 관계없이 사용자에게 중요한 정보를 전달 Focus를 사용하여 사용자가 알림으로부터 방해를 받지 않게 지정할 수 있음→ Focus가 알림 전달을 지연시킬 수 있지만 알림 자체는 즉시 사용 가능 → 집중 모드, 지정시간 알림 설정(Notification Summary) 시 알람을 필터링 가능함.. OAuth(Open Authorization) OAuth(Open Authorization) 표준화된 인증방식 이전에는 각 애플리케이션 별로 개발한 인증방법을 사용하여 보안에 취약 OAuth를 이용하면 이를 공유하는 애플리케이션끼리 별도의 인증이 필요 없어짐 사용자(user): 서비스 제공자와 소비자를 사용하는 계정을 가지고 있는 개인 ex) 나 소비자(consumer): Open API를 이용하여 개발된 OAuth를 사용하여 서비스 제공자에게 접근하는 웹사이트 또는 애플리케이션 ex) 네이버 로그인을 쓰고싶은 제 3의 사이트 서비스 제공자(service provider): OAuth를 통해 접근을 지원하는 웹 애플리케이션(Open API를 제공하는 서비스) ex) 네이버 로그인 소비자 비밀번호(consumer secret) : 서비스 제공자에서 소.. Localization Localization - L10N(Localization / L과 N사이 10글자) - 국제화를 하기 위해선 지역화를 해야함 - 시장에 맞춘 지역화(현지화)의 필요성 대두 Internationalization - I18N(Internationalization / I와 N사이 18글자) - Apple 사용자의 70% 이상이 미국외 지역으로 추정 - Apple은 앱스토어를 통해 국제화를 하고자 함 - 브랜드는 국제적으로! 판매상품은 지역적으로! - 국제화는 애플의 역할, 지역화는 개발자의 영역임 국제화 및 지역화를 위한 코드를 작성 시 고려해야할 사항들 User Facing Text : string Formatter를 사용하여 텍스트 지역화 날짜, 통화, 숫자 : Date Formatter, Number .. Frame / Bounds Frame superview의 좌표계에서 뷰 자신의 위치와 크기를 나타냄 superview를 기준으로 자신의 origin과 자신을 감싸는 사각형의 size를 나타냄. 회전하게 되면 자신을 감싸는 사각형을 기준으로 size를 나타냄. Bounds superView와 상관없이 View의 위치, 크기를 자체 좌표계에서 표현하는 사각형 기본값은 (0,0), 크기는 프레임의 사각형과 동일 -> 뷰를 그리면 (0,0)이 지정됨 회전과 상관 없이 자기 자신의 size를 나타냄 크기 조정 시 option누르고 조정하는 것과 동일방식 → 사각형 중심점 기준으로 변화 bounds.origin이 바뀌게 되면 자신이 움직이고 frame.origin은 바뀌지 않기 때문에 subview가 움직인다 애니메이션 효과도 줄 수 있다 .. animateKeyframes / addKeyframe 실습 예시 코드 1) /* 레이아웃이 결정되고 나서 아래와 같은 일을 수행하고자 할 때 이 메서드를 override하여 사용 다른 뷰들의 컨텐트 업데이트 뷰들의 크기나 위치를 최종적으로 조정 테이블의 데이터를 reload */ override func viewDidLayoutSubviews() { let viewAnimated = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100)) viewAnimated.center = view.center view.addSubview(viewAnimated) keyFrameAnimate(for: viewAnimated) } func keyFrameAnimate(for viewToAnimate: UIView) { let o.. Animate Method Animate View UIView 클래스 중 다음 속성들은 애니메이션 효과를 줄 수 있음 frame bounds center transform Rotate : 객체 회전 Scale : 객체 크기 조정 Translate : 객체 변환 Skew : 객체 기울이기 alpha backgroundColor Timing Function 애니메이션의 간격 동안 속성 값의 변화 속도를 제어하는 데 사용 Ease-In (가속): 이 함수는 애니메이션이 시작할 때 느리게 시작하고, 시간이 흐를수록 가속하는 형태를 가짐. 오브젝트가 처음에 움직이기를 더 어렵게 만들며, 점차적으로 빨라짐. Ease-Out (감속): 이 함수는 애니메이션이 빠르게 시작하고, 시간이 흐를수록 감속하는 형태를 가짐. 오브젝트가 처음에 움직이기를.. 이전 1 2 다음