앱등이에게 살충제를 뿌린다./iOS
-
UITabBarController에 탭바를 버튼처럼 사용하기. feat.인스타그램앱등이에게 살충제를 뿌린다./iOS 2016. 5. 30. 16:32
인스타그램의 UI입니다. 가운데 탭을 누르면 현재 탭에 modal로 사진을 고르는 화면이 present됩니다.어떻게 한걸까요? UITabBarController에 tab만 넣고 viewController를 넣지 않는 것은 불가능하기에 아래 시나리오처럼 따라주세요.코드는 그냥 수도코드로 봐주세요~ 1. TabBarController의 viewControllers에는 5개의 viewController를 넣어주세요. 가운데 탭에 해당하는 viewController는 fake입니다. 사용하지 않을 viewController이기 때문에 아무 인스턴스나 넣어주시면 됩니다. 2. UITabBarControllerDelegate의 메소드인 optional func tabBarController(_ tabBarContr..
-
[iOS/Swift] XML 파싱하기앱등이에게 살충제를 뿌린다./iOS 2016. 5. 10. 14:41
가끔은 JSON이 아닌 XML을 파싱해야할 경우가 있다. 공공데이터는 XML도 아직 많이 있다고 들은 것 같기도 하고? 일단 결과부터 보고 시작 1. Singleview project에서 이 코드를 그대로 복붙하고 스토리보드에서 UILabel하나만 생성하여 연결해줍시다. (+UILabel의 numberOfLines는 좀 여유있게 20정도 잡아줬어요.) (+ats도 해결해줍시다. 참조:http://rhammer.tistory.com/67) http://api.androidhive.info/pizza/?format=xml에 있는 피자메뉴의 이름만 가져왔네요. 2. NSXMLParser NSXMLParser는 XML문서를 분석하는 클래스입니다. XML문서를 읽으며 태그를 만날때 마다 이를 delegate에 알..
-
[디버깅] Splitview에서 화면의 가로사이즈 때문에 생긴 버그앱등이에게 살충제를 뿌린다./iOS 2016. 5. 3. 00:12
QA를 안해봐서 그런지 QA들은 참 대단하다.귀신 잡는 해병보단 버그 잡는 QA들이 더 대단하다. 버그내용 - Splitview일 때 네비게이션 바의 타이틀이 길어지면 네비 바 가로 전체를 차지해서 백버튼과 네비BarItem을 가리게 됨. 당연히 엄청난 버그 네비게이션 바에 필요한 데이터를 model로 관리했는데, 이 때 타이틀뷰의 최대 길이를 (UIScreen의 width사이즈 - 네비바Item들의 width합)으로 지정해줬다.Split이 되어 앱의 width는 짧아 지지만 UIScreen의 width는 변함 없이 디바이스의 가로길이를 리턴한다.UIScreen의 width를 self.view.window의 width로 바꿔주고 해결 네이버 인강에서 봤는데, 앱은 항상 하나의 window를 갖고 있다고 ..
-
[iOS] 깔끔한 달력 오픈소스.앱등이에게 살충제를 뿌린다./iOS 2016. 5. 2. 00:28
달력 뷰를 직접 생성하려면 정말 머리아프다.타이레놀을 아끼기 위해서 오픈소스를 뒤져보던 중 너무나 깔끔한 것을 찾았다. 사용법(초간단 심쿵주의)먼저 pods에 추가해야하므로, Podfile에 pod 'FSCalendar' 을 추가해주세요. 추가한 뒤 pods update를 통해 라이브러리 추가해주시면 됩니다. 스토리보드에 UIView를 생성 추가한 뷰의 클래스명을 FSCalendar로 입력하면 자동으로 달력뷰 생성 간단한 사용 예시 import UIKit import FSCalendar class ViewController: UIViewController, FSCalendarDelegate, FSCalendarDataSource { //Delegate랑 Datasource프로토콜은 거의 필수로 구현한다고..
-
[Raywenderlich - iOS/Swift] Alamofire 사용하기앱등이에게 살충제를 뿌린다./iOS 2016. 4. 15. 00:34
Alamofire는 iOS와 OS X에서 사용하기 위한 Swift기반의 HTTP 네트워킹 라이브러리입니다. 애플의 네트워킹 파운데이션을 기반으로 많은 기능을 제공하고 있습니다. Alamofire는 reponse/request 메소드, JSON parameter와 response serialization, authentication 등의 기능을 제공합니다. 이번 튜토리얼에서는 파일 업로드나 RESTful API에서 데이터를 요청하는 작업과 같은 기본적인 네트워킹 작업에 대해서 소개합니다. Alamofire는 AFNetworking의 Objective-C코드를 전혀 상속하지 않고 모두 Swift로 새롭게 만들었다는 점에서 참 대단한 라이브러리입니다. 시작하기 전에, HTTP네트워킹과 NSURLSession이..
-
[Raywenderlich - iOS] NSURLSession 사용 가이드앱등이에게 살충제를 뿌린다./iOS 2016. 4. 11. 00:59
앱이 서버로부터 앱 관련 데이터를 받거나, 소셜 미디어의 상태를 업데이트하거나, 리모트 서버의 파일을 로컬에 다운로드 받거나,, 어떤 경우던지 HTTP 요청은 모바일 앱의 핵심이라고 할 수 있습니다. 수 많은 네트워크 요청을 하고자 하는 여러분을 위해 Apple에서는 NSURLSession을 제공하고 있습니다. 이 놈은 HTTP를 통해 컨텐트를 업로드하거나 다운로드를 하는 네트워킹 API를 완벽하게 아우르는 놈입니다. NSURLSession 튜토리얼에서는 NSURLSession을 사용하여 Half Tunes라는 앱을 만들어볼 것입니다. 이 앱은 iTunes Search API에 커리를 보내 특정 음악의 30초 미리듣기를 다운로드 하는 앱입니다. 최종적으로 완성한 앱에서는 백그라운드 전송과 사용자들이 다운..
-
weak property에 클래스 초기화구문을 대입하면 OOO. (안된다)앱등이에게 살충제를 뿌린다./iOS 2016. 4. 7. 18:39
let frame = CGRect(x: 0, y: 0, width: 100, height: 100) weak var myButton: UIButton! var myButtonNotWeak: UIButton! override func viewDidLoad() { myButton = UIButton(frame: frame) myButtonWithoutWeak = UIButton(frame: frame) }라는 코드가 있다고 할 때, myButton은 nil이 되고 myButtonWithoutWeak는 UIButton객체를 갖게 된다. 이게 왜 문제냐면.. 이 코드가 아래와 같았다면?let frame = CGRect(x: 0, y: 0, width: 100, height: 100) weak var myButt..
-
[NSHipster - iOS] 객체의 동등성 Equality 와 Identity에 대하여앱등이에게 살충제를 뿌린다./iOS 2016. 1. 26. 22:56
Equality & Identity먼저 Equality와 Identity간의 차이를 아는 것이 중요합니다. 같은 관찰가능한(Observable)프로퍼티들을 공유하고 있다면 두 객체는 Equal하다고 볼수있습니다. 또한 각 객체는 자신만의 Identity를 가지며 서로 독립적(distinct)이라고도 할 수 있습니다. 프로그래밍에 있어서 Identity는 객체의 메모리 주소와 관련되어 있는 부분입니다. NSObject클래스에서는 isEqual:메소드를 통해 다른 객체와의 equality를 판단합니다. 이 기본적인 메소드의 구현부에는 바로 두 객체의 identity를 비교하는 과정을 거칩니다. 두개의 NSObject객체는 같은 메모리 주소공간을 가리키고 있어야 Equal하다고 판단하게 됩니다. @implem..