본문 바로가기

전체 글

(304)
이미지의 이해1 - Image Processing in iOS Part 1: Raw Bitmap Modification 사진으로 동영상 만드는 앱을 만들다 보니 이해할 수 없는 코드들을 너무 많이 만나게 되었다. CVPixcelBuffer, CGBitmapContext 등등.. 그리고 2016.5.11 현재 내가 만든 앱은 기능적으로는 정상 작동하지만 동영상에 사용되는 각각의 프레임이 검은 화면으로 나오는 상황에 처했으며 이를 해결할 수 있는 능력이 나에게는 없다. 그래서 이러한 이미지 처리를 이해하고 그 후 해결해야겠다는 생각이 들었다.그러다가 다음과 같은 좋은 글을 발견하고 이를 간략하게 번역하여 기록하고자 한다. 출처: https://www.raywenderlich.com/69855/image-processing-in-ios-part-1-raw-bitmap-modification spooky image filter라..
내가 만든 앱이 생성한 파일 다운받고 내용 확인하기 (xcappdata, download container) 고속 연사 촬영 사진을 가지고 동영상을 만드는 앱을 제작 중이다. 그러나 역시 첫 앱이라 그런지 너무 헤매고 있다. 어찌어찌 하여 앱 내에 파일을 만들어 저장하는 것 까지는 성공을 했는데 그게 제대로 된 동영상인지 확인하려는데 확인을 못 하겠는 것이다.이 때문에 앱 내에 동영상 플레이하는 기능까지 만들어서 넣었건만 검은 화면만 나와서 답답하던 차에 앱 내의 데이터를 확인하는 방법을 알게 되었다. 다음 순서대로 하면 된다.XCode 메뉴 > Window > Devices 선택내 폰 연결(물론 내 폰은 USB로 연결을 해 놓은 상태이어야)내가 만든 앱 선택기어 표시 클릭하고 Download Container.. 선택하고 파인더에 저장하면 ~.xcappdata 파일이 저장된다.~.xcappdata 파일을 오른..
performSegueWithIdentifier 좀 헛짓거리 하다가 이걸 알게 되었는데 까먹을까봐 해당 소스만 여기에 남겨놓는다.별도로 Main.Storyboard에서 segue를 를 설정하지 않아도 코드로 호출할 수 있도록 하는 메소드이다. // 셀이 선택되었을 때를 설정하는 메소드 func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { // 셀이 선택되었음을 보여주기 위해서 셀의 모양에 변화를 주려 했으나 실제 셀이 선택되는 순간 뷰가 변경되므로 무의미한 코드가 되어버렸다. if let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifi..
SortDescriptor와 Predicate 결국은 헛짓거리였지만 그래도 어렵게 알아낸 SortDescriptor와 Predicate를 기억하기 위해 기록한다.Predicate는 배열이나 Collection 및 데이터 내에서 특정 조건으로 내용을 조회하거나 fetch하기 위해 사용하는 기능이다. 자세한 내용은 바로 이 링크에서 확인 가능하다. // 만약 두 가지 이상으로 정렬을 하고자 하는 경우 sort2를 만들고 sortDescriptors 배열에 추가한다. // 예: options.sortDescriptors = [sort1, sort2] let sort1 = NSSortDescriptor(key: "startDate", ascending: true) options.sortDescriptors = [sort1] // BurstAlbum을 Fet..
fetchKeyAssetsInAssetCollection vs fetchAssetsInAssetCollection 모르면 몸이 고생한다더니 내가 딱 그짝이다. 근본없는 코딩의 목적지가 바로 이것이 아닌가 싶기도 하다. 내 아이폰의 Burst 앨범에는 수 백 개의 고속연사사진들이 있다. 이 고속연사사진을 가져오고 싶어서 열심히 구글링하고 짜집기 한 끝에 아래 코드 중 주석 //1. 에 해당하는 코드를 만들어내었다. 그런데 이 코드를 사용하면 매번 이상하게 최근 3개의 사진만 조회되는 것이다. 같은 날 많이 찍은 것이 있어도 최근 3개만 조회가 되는 것이었다. 이 원인을 메소드를 잘 못 써서 그랬다고는 전혀 생각치 못하고 PHFetchOptions을 줘야 한다고 생각했다. 처음에는 PHFetchOption의 사용법도 몰라서 또 며칠 헤매었다. 그러다가 sorting하는 법까지는 알아냈는데 predicate하는 법은 알아..
[에러처리] does not have a reuseIdentifier 아래와 같은 에러 메시지를 만났다.reuseIdentifier가 없다고 해서 이 부분만 집중적으로 확인해보았는데, 여기저기 뒤져본 결과 클래스를 등록하지 않아서 그렇다고 한다. 2016-04-27 00:18:02.398 BurstAnimator[24405:7733921] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'the cell returned from -collectionView:cellForItemAtIndexPath: does not have a reuseIdentifier - cells must be retrieved by calling -dequeueReusableCellWit..
사진앱과 비슷한 UX를 제공하는 Collection View 만들기 2 왕초보의 Collection View 이해하기 사진앱과 비슷한 UX를 제공하는 Collection View 만들기 1에서 만든 소스에 특정 Cell을 선택했을 때 세부 뷰로 이동하여 세부 이미지를 보여주는 기능을 만들어보려 한다. 원래 1의 BurstAlbumVC는 burst album의 사진을 가져와 대표사진을 보여주는 것이었기 때문에 다음 뷰에서는 대표사진에 해당되는 Burst Image 모두 가져와서 뿌려주는 것이다. 일단 Burst Image 뷰를 호출하는 것까지만 만들어보고 이 뷰의 내용은 다음에 채워볼 것이다. Main.Storyboard 새로운 View Controller 하나를 추가한다. 새 Controller 파일(BurstImageVC)을 하나 만들고 이 View와 연결시킨다.그리고 B..
사진앱과 비슷한 UX를 제공하는 Collection View 만들기 1 왕초보의 Collection View 이해하기 이제 Collection View에 Navgation Bar를 놓을 수 있게 되었다. 이 두 가지 기능을 이용하여 앞서 만들어본 Collection View를 좀 더 보기 좋게 만들어보고자 한다. 사진 앨범 중 카메라 롤 앨범에 접근하여 사진 목록을 가져와서 Collection View에 뿌려주는 앱을 코딩하였다. 맥북에서 디버깅을 하기 위하여 카메라 롤 앨범에 접근하였지만 원래 목적은 고속연사앨범(Burst Album) 사진을 뿌려주는 것이다. 먼저 소스부터.. Main.Storyboard 스토리 보드는 아래와 같이 구성해보았다. 앞서 설명했었던 Collection View와 Navigation Bar를 조합한 것이다. BurstAlbumVC.swift 여..