-
[DevDiary] 상반기 리뷰앱등이에게 살충제를 뿌린다./일기는 일기장에 2017. 7. 13. 13:02
<하반기를 맞이하는 나의 상태>
상반기는 G프로젝트만을 진행했다.
아직 오픈은 하지 않았고, 8월 중 오픈 예정이다.
프로젝트를 하며 경험한 것들을 기록해본다.
1. 간단 에디터 구현.
ImagePickerController를 사용하지 않고 Photos Framework를 사용하여 커스텀 Picker를 구현할 수 있었다.
카메라 또한 AVCaptureSession을 사용하여 커스텀으로 구현할 수 있었다.
Photos framework http://rhammer.tistory.com/229
AVCaptureSession http://rhammer.tistory.com/231
2. Push, Pop, Present, Dismiss 커스텀 트랜지션 구현
<출처: https://www.raywenderlich.com/110536/custom-uiviewcontroller-transitions>
Custom Transition http://rhammer.tistory.com/259
3. Core Animation
위 2번의 Custom트랜지션을 구현하면서 UIView.animateWithDuration()메소드를 많이 사용했다.
하지만 디자인부서에서 트랜지션의 custom timing function을 요구하여 Core Animation을 사용해야했다.
Ex) CAMediaTimingFunction(controlPoints: 0.3, 1.5, 0.5, 0.9)
Core Animation http://rhammer.tistory.com/259
Custom timing function의 종류 http://easings.net/ko
4. AVAudioSession (다른 앱의 오디오출력 제어)
이건 바로 어제 작업했던 내용인데, 음악을 들으면서 페이스북과 인스타그램 앱을 사용할때
페이스북: 동영상을 키면 음악이 일시정지되고 동영상을 끄면 음악이 다시 재생됨 (AVAudioSessionCategorySoloAmbient)
인스타그램: 동영상을 키던 말던 음악은 계속나오고 동영상의 소리와 음악이 동시에 나옴 (AVAudioSessionCategoryAmbient)
이런 설정은 AVAudioSession의 category설정을 변경함으로써 수정할 수 있다.
5. 스플래쉬 애니메이션 + 로그인/로그아웃 시나리오
스플래쉬화면에 애니메이션을 제공하기 위해 실제 Splash에서 이어지는 UIViewController를 만들어 이 곳에서 스플래쉬를 구현한다.
이 ViewController에서는 스플래쉬를 애니메이션을 보여주며 원하는 작업을 마음껏 추가할 수 있다.
Ex) 로그인여부 파악하기, 메인화면에 필요한 데이터 미리 로드하기.
6. Notification 설정
Notification의 payload에 badge필드를 OS가 알아서 카운트 업데이트를 한단걸 알았다. 즉 앱의 Badge count를 바꾸는건 푸쉬와 개발자의 코드. 두 가지 방법이 있단걸 알았다.
Notification을 받았을 때의 App Status에 따른 핸들링을 할 수 있었다.
Ex) App Not running, App Running Background, App Running Foreground
Running Background와 Running Foreground를 구분하여 핸들링하기가 힘들었는데, application.applicationState값으로 분기처리하면 된다는걸 알았다.
UNNotificationAction를 구현할 수 있었다. 이건 UIAlerController를 띄우듯 간단하게 구현이 되더라.
6. Peek and pop 구현하였다.
http://rhammer.tistory.com/249
7. Parallax Scroll 구현
UICollectionViewCell에 UIImageView의 centerXConstraint를 조정하여 Parallax Scroll을 구현할 수 있었다.
8. Snap Scroll 구현
UICollectionViewFlowLayout의 targetContentOffset메소드를 오버라이드하여 스크롤의 강도가 약할때 Snap Scroll을 할 수 있도록 구현했다.
9. 앱권한 Privacy문구 Localization
NSCameraUsageDescription = "사진을 촬영하기 위해 카메라 권한이 필요합니다.";
NSPhotoLibraryUsageDescription = "사진을 등록하기 위해 사진첩 권한이 필요합니다.";
info.plist파일에 직접 문자열을 입력하지 말고 infoplist.strings파일에 이렇게 입력하면 Permission문구를 Localize할 수 있다.
10. 정규식
해쉬태그, 멘션, 닉네임 추출등을 위해 정규식을 다시 리마인드 했다. 간단한 정규식은 아직도 머리속에 남아 있으나, 곧 지워질 예정
https://opentutorials.org/module/622/5143
생각나는대로 업데이트해야지
'앱등이에게 살충제를 뿌린다. > 일기는 일기장에' 카테고리의 다른 글
[DevDiary] 아이폰 앱이 실행되는 여러가지 방법 (0) 2018.04.17 [Cocoapods] High Sierra로 업데이트 한 뒤, pod이 인식이 안된다. (0) 2018.03.02 [DevDiary] Custom Transition & CoreAnimation (0) 2017.06.24 UITableView와 UICollectionView의 AutoSize에 관하여.. (0) 2017.06.17 [Diary] WWDC 2017 비디오를 보면서.. (0) 2017.06.08