앱등이에게 살충제를 뿌린다./iOS
-
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의 값..
-
[iOS] iOS12에서는 아이폰 전용앱이 아이패드에서 실행해도 16:9로 실행된다.앱등이에게 살충제를 뿌린다./iOS 2018. 6. 24. 16:49
많은 분들이 알고 계시겠지만, iOS앱 심사를 요청하면, 애플에서는 아이패드에서 테스트를 진행합니다.앱이 iPhone only앱일지라도, 애플에서는 아이패드에서 심사를 진행하죠. iPhone only앱을 아이패드에서 실행해보신 적이 있나요?아마 은행앱?을 아이패드에서 다운받아보면, 화면이 작게 나타나고, 비율 해상도 등이 엉망이 된것 같은 느낌이 드는데요.말 그대로, iPhone only앱이기 때문에 iPad에서는 지원을 하지 않는겁니다. 이 때, iPad에서는 화면을 3:2비율로 보여줍니다.(아이폰4의 비율 말이죠.) 하지만 iOS12에서는 바뀌려나 봅니다.iPad의 iOS11과 iOS12(beta2)에서 iPhone only앱을 실행시킨 결과를 보시죠.iOS11에서는 3:2비율로 나타나고, iOS12..
-
[iOS/디버그일지] UIPageViewController의 setPage에서 크래쉬 발생 (*** Assertion failure in -[_UIQueuingScrollView _replaceViews:updatingContents:adjustContentInsets:animated:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit/UIKit-3600..앱등이에게 살충제를 뿌린다./iOS 2018. 2. 9. 16:14
setViewControllers([viewController], direction: .forward, animated: true, completion: { [weak self] (_) in self?.someUIMethod()}) 음.. 크래쉬 발생함 *** Assertion failure in -[_UIQueuingScrollView _replaceViews:updatingContents:adjustContentInsets:animated:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit/UIKit-3600.9.1/_UIQueuingScrollView.m:377 원인은 setViewControllers의 completion 클로져가 메인 스레드에서 ..
-
[iOS] Alamofire의 고급 사용법!! SessionManager, SessionDelegate, RequestAdapter, RequestRetrier앱등이에게 살충제를 뿌린다./iOS 2018. 1. 16. 21:21
Alamofire - AdvancedUsage제가 개발중인 프로젝트에서는 중요하다고 판단되는 API의 경우, API가 실패하면 3회 재시도하는 로직이 있습니다.이러한 로직을 공통으로 처리하고자 하는 도중, Alamofire에서 제공하는 Retrier는 뭐지?라는 의문을 시작으로 이 문서를 작성한다.(Alamofire - Advanced Usage를 기반으로 작성하였음) Session ManagerRetrier를 알아보기 전에 SessionManager라는 클래스를 짚고 넘어갈 필요가 있다. 우리는 보통 Alamofire의 request를 생성할 때, 아래와 같은 코드를 작성한다.Alamofire.request("http://www.naver.com") 사실 Alamofire.request()는 Alamo..
-
[iOS] 사용자 동의 없이 사용자의 위치를 파악하기앱등이에게 살충제를 뿌린다./iOS 2017. 10. 12. 15:14
아이폰으로 사용자 동의 없이 사용자의 위치를 파악하고 싶다면, 하지 마라참고 : https://stackoverflow.com/questions/17577144/how-can-whatsapp-know-country-code-upon-first-run-on-iphone 우선, 사용자의 위치를 파악할 수 있을 만한 방법은 두 가지 정도 존재하겠다.1. CLLocationManager를 사용한다. -> 사용자 동의 필수2. 사용자의 IP주소를 파악하여, IP로 조회한다. -> 리젝 사유가 되기에 충분함어차피 애플은 사용자 동의 없이, 개발자에게 사용자의 위치를 알려줄 생각이 없다. 그래서, 유심을 통해서 국가 정도만 알아 내자. 콘솔에는 이렇게 찍히게 된다. Dialing code for "KR" is "+8..
-
[iOS-Rich Push] Notification Service Extension, Notification Content Extension을 알아보자. (푸쉬에 이미지 넣기)앱등이에게 살충제를 뿌린다./iOS 2017. 8. 31. 20:53
WWDC2016에서 iOS10과 함께 Notification Service Extension, Notification Content Extension이 소개되었습니다. 아이폰을 사용하시는 분께서는 이게 뭔지 잘 아시리라 생각됩니다.메세지 앱에 적용된 Extension Service Extension, Content Extension은 어떻게 다른 것인가?Service Extension적용하여 미디어 노출시키기Content Extension적용하여 푸쉬화면 커스터마이징하기Content Extension적용시 발생하는 몇 가지 문제점서버에서 해주어야 할일느낀 점1. Service Extension, Content Extension은 어떻게 다른 것인가? #Service Extension은 페이로드를 가로채 ..
-
[iOS] UIActivityViewController에 Instagram이 나오지 않는다?앱등이에게 살충제를 뿌린다./iOS 2017. 8. 16. 18:26
Swift3로 작성되었음 이 포스트에 사용된 예제: https://github.com/cpromise/ShareOnInstagram 사진앱을 켜서 공유버튼을 눌러보면 인스타그램으로 업로드가 가능하다. 우리 앱에서도 UIActivityViewController를 띄워 인스타그램으로 업로드를 해보자.코드는 매우 간단하다. let activityViewController = UIActivityViewController(activityItems: ["Title"], applicationActivities: nil) present(activityViewController, animated: true, completion: nil) 실행해보자.예상대로, 인스타그램은 없다.왜일까? 인스타그램은 Document Int..
-
[iOS] UICollectionView와 UICollectionViewFlowLayout의 관계: 간단하게 2단리스트를 만들어보자!앱등이에게 살충제를 뿌린다./iOS 2017. 8. 3. 01:16
Swift3기준으로 작성되었습니다.UICollectionView가 UICollectionViewFlowLayout와 함께 레이아웃을 만드는 과정을 간단히 알아보겠다.샘플앱을 보고,컬렉션뷰의 레이아웃 과정을 알아본 뒤,샘플앱을 수정해보자.1. 샘플앱컬렉션뷰를 하나 만들고 셀에는 UIImageView하나만 추가되어 있다. 이 쯔위앱을 만들기 위해서는 아래코드가 필요하다.import UIKit// 편의상 전역변수let imagesCount = 21var images: [UIImage] { /*...*/ return images } class ViewController: UIViewController, UICollectionViewDataSource { func collectionView(_ collection..