발생일: 2016.08.17 키워드: CollectionView, 컬렉션뷰, Bounce, 바운스 문제: 인터페이스 빌더에서 Bounce Vertically 또는 Bounce Horizontaly 를 설정했는데도 바운드가 적용되지 않는다. 해결책: 코드 레벨에서 컬렉션 뷰에 alwaysBounceHorizontal 옵션을 주니 적용된다. self.collectionView.alwaysBounceHorizontal = YES; 참고: http://stackoverflow.com/questions/18390972/uicollectionview-doesnt-bounce-when-datasource-has-only-1-item
발생일: 2016.07.08 키워드: View Controller Life Cycle, 뷰 컨트롤러 라이프싸이클 내용: 뷰 컨트롤러의 라이프싸이클 viewDidLoad - 뷰가 준비된 상태로 뷰컨트롤러에서 사용할 객체들을 초기화할 때 적합한 - 뷰의 바운드가 아직 정의되지 않은 상태 - nib 에서 320으로 했다면, 컨스트레인트가 오토리사이징이 적용되지 않은 상태 - 메모리워닝이 실행되는 경우 중복 호출될 가능성이 있다 viewWillAppear - 뷰가 스크린에 보이기 바로 전 - 뷰의 바운드는 정의됐지만, 오리엔테이션이 설정되진 않은 상태 - 테스트해보았는데 여전히 바운드도 넘어오지 않는다 - 필드를 숨기거나 보여주기에 적합한 시점 - 뷰가 스크린에 보여질 때마다 호출됨 viewWillLayoutS..
발생일: 2016.05.23 키워드: Grand Central Dispatch, GCD, 디스패치 큐, Dispatch Queue, 문제: GCD를 처음 알게 되었을 때 정리해둔 기초 수준의 질문과 답변이다. 해결책: # 튜토리얼 GCD 기본 https://www.raywenderlich.com/4295/multithreading-and-grand-central-dispatch-on-ios-for-beginners-tutorial GCD 상세 https://www.raywenderlich.com/60749/grand-central-dispatch-in-depth-part-1 https://www.raywenderlich.com/63338/grand-central-dispatch-in-depth-part-..
발생일: 2016.04.25 키워드: content hugging, compression resistance priority 문제: iOS의 뷰 처리를 하면서 헷갈렸던 개념이 Content hugging 과 Compression Resistance 였다. 해결책: 현재 뷰를 기준으로, 뷰의 영역이 늘어나거자 줄어드는 경우에 대한 기준을 설정하는 값이다. Content Hugging Priority 늘어나는 경우에 대한 우선순위 - 화면이 커지는 경우, 우선순위가 낮은 뷰가 화면에 따라 더 늘어난다. - 어떤 뷰가 늘어나서 화면을 채울 것인가? (우선순위가 낮은 뷰가 늘어난다) 어떤 뷰의 컨텐트 허깅 프라이어리티를 높인다는 것 - 화면이 커져도 이 뷰는 크기를 유지하겠다 어떤 뷰의 컨텐트 허깅 프라이어리티..
발생일: 2016.03.17 키워드: UIImageView, 라운드, round 문제: UIImageView에 라운드를 적용하려고 한다. 해결책: 여러 가지 방법이 있는데, 고정된 사이즈의 이미지라면 layer의 cornerRadius를 사용하는 것이 간단한다. @property (nonatomic, weak) IBOutlet UIImageView imageView; ... self.imageView.layer.cornerRadius = CGRectGetWidth(self.imageView.frame) / 2.0f; Clic subview를 선택하고, Mode를 원하는 값으로 설정하는 것을 잊지 말자. 참고: http://stackoverflow.com/questions/4314640/setting-co..
발생일: 2016.02.29 키워드: NSDictionary, NSMutableDictionary, NSKeyValueCoding, Key-Value Coding, 키-값 코딩, KVC 문제: 사전 객체에서 valueForKey를 호출할 때, 키 앞에 @를 넣는 코드가 있다. 뭘 의미하는 걸까? 해결책: 사전 클래스 NSDictionary 와 NSMutableDictionary 는 NSKeyValueCoding 프로토콜의 메서드를 제공해서 키-값 코딩에 대응한다. NSDictionary 에는 다음 메서드가 정의되어 있다. - (id) valueForKey: (NSString *)key; 키 문자열의 앞 부분이 '@'로 시작하는 경우 슈퍼 클래스의 valueForKey: 를 호출하고, 그렇지 않은 경우엔 ..
발생일: 2016.02.25 키워드: UIImage, imageNamed, imageWithContentsOfFile 문제: UIImage 객체에서 이미지를 불러오는데, 어떤 코드에서는 imageNamed 를 사용하고 어떤 코드에서는 imageWithContentsOfFile 을 사용하고 있다. 어떤 차이일까? 해결책: imageNamed - 로드한 이미지를 캐시에 저장한다. - 디바이스와 해상도에 맞는 확장자의 파일을 로드한다. - 예) img.jpg, img@2x.jpg, img~ipad@2x.jpg imageWithContentsOfFile - 이미지를 불러오지만 캐시에 저장하지 않는다. - 1회성으로 로드해 보여주는 이미지에 적합하다.
iOS: 유니버셜 링크 적용하기 에서 계속... 발생일: 2016.06.15 키워드: 유니버셜 링크, universal link, smart banner, 스마트 배너, apple-app-site-association 문제: 웹페이지에서 '앱에서 보기' 버튼을 클릭했을 때, 유니버셜 링크로 앱을 띄우려고 한다. 해결책: 웹페이지에서 '앱에서 보기'를 구현하려고 한다면, 가장 명확한 방법은 iOS에서 제공하는 스마트 앱 배너를 제공하는 것이다. 하지만, 스마트 앱 배너는 디자인 변경이 어려워서, 우리 팀에서는 별도의 버튼을 만들어 구현했다. 참고로, 동일 도메인에서는 유니버셜 링크가 동작하지 않는다. 예를 들어, 유니버셜 링크로 등록되어 있는 경로가 https://example.com/app 라고 가정하면..
iOS: 유니버셜 링크 적용하기 에서 계속... 발생일: 2016.06.15 키워드: 유니버셜 링크, universal link, smart banner, 스마트 배너, apple-app-site-association, applinks 문제: 유니버셜 링크에 대한 처리를 앱에 추가하려고 한다. 해결책: 유니버셜 링크를 지원하려면, 먼저 앱에서 유니버셜 링크를 허용할 도메인을 추가해줘야 한다. Xcode 프로젝트 > Target 메뉴의 대상 프로젝트 > Associated Domains 메뉴에서, applinks: 스킴으로 대상 도메인을 추가하면 된다. 예) applinks:example.com applinks:*.example.com (사용자가 앱 설치 시, 여기에 등록된 도메인으로 apple-app-s..
iOS: 유니버셜 링크 적용하기 에서 계속... 발생일: 2016.06.15 키워드: 유니버셜 링크, universal link, smart banner, 스마트 배너, apple-app-site-association, nginx 문제: 유니버셜 링크에 대한 처리를 위해 apple-app-site-association 파일을 웹서버에 추가하려고 한다. 해결책: 유니버셜 링크를 허용할 웹사이트에서, 유니버셜 링크로 처리할 정보가 담긴 association file에 대한 요청을 응답할 수 있게 처리해주면 된다. 먼저 아래 형식으로, apple-app-site-association 를 이름으로 하는 파일을 작성한다. { "applinks": { "apps": [], (A) "details": [ { "app..