본문 바로가기

프로그래밍439

탭바(UITabBarController) 3장 - 탭바 아이템 1. 탭바에 들어갈 이미지와 각탭의 이름을 설정해줍니다. 이미지 형식은 알파값으로만 구성되어있는 .png를 사용하시면 됩니다. 이미지의 사이즈는 탭의 갯수가 유동적일수 있으나 최대 5개까지만 보여지고 6개이상이되면 ...으로 묶여버립니다. 물론 6개이상의 탭을 구성한다고 하더라도 각탭의 모든 아이콘은 확인할수 있습니다. 하지만 디자인적으로 화면에 보여지는 최대숫자인 5개에 맞춰서 유연하게 사용할수 있도록 50 X 30 사이즈로 만들어 줍니다. (여기서 사용된 이미지를 첨부해뒀습니다) 어플리케이션 폴더로 찾아들어가셔서 폴더를 하나 추가한뒤에 폴더명을 바꾸시고(Images로 바꿨습니다), 이미지파일들을 넣어주세요. 그후에 이름을 변경하신 폴더를 (저는 "Images"폴더가 되겠지요) Xcode왼쪽에 있는 G.. 2012. 2. 9.
탭바(UITabBarController) 2장 - 최상위뷰 구현 탭바는 최상위뷰에 여러 탭이 붙어있는 멀티뷰 형식입니다. 따라서 처음에는 최상위뷰를 먼저 구현해줘야합니다. Xcode를 켠뒤 "Create a new Xcode project" - "Window-based Application"을 선택합니다. 제일 어렵다는 프로젝트명은 대충 만들어주세요. 바로 파일을 추가해줍니다. 탭을 터치할때마다 보여지게될 뷰입니다. "UIViewController subclass"를 선택해주세요. 밑에 With XIB for user interface 선택은 해주셔도 안해주셔도 상관업습니다. 클래스명은 1장에서 봤던 템플릿과 비슷하게 "FirstViewController"로 정했습니다. 중요한거 아니니 취향대로 정해주세요. 우리는 2개짜리를 먼저 만들어볼께요. 한번더 똑같이 추가해주.. 2012. 2. 9.
탭바(UITabBarController) 1장 - Template 살펴보기 탭바(UITabBarController)는 유틸리티 계열의 어플리케이션에서 사용빈도가 꽤 높은 편입니다. 이럴것을 예상한것인지 사용빈도를 보고 추가해준것인지 템플릿으로 지원을 하고 있습니다. UITabBarcontroller는 NSArray타입으로 viewControllers 프로퍼티를 가지며 탭바를 소유하고있습니다. 템플릿의 IB를 확인하시는 것으로 IB를 사용해서 탭바를 구성을 하는것에 대한 대부분의 정보가 담겨있기때문에 IB로 탭바를 구현하는 부분은 건너뜁니다. 우선 템플릿부터 살펴보죠. Xcode를 켠뒤 Create a new Xcode project를 선택합니다. 템플릿으로 들어갔더니 "Tab Bar Application"이 보입니다. 선택해주세요. 편하신대로 이름을 만들어주세요. 저는 "Tab.. 2012. 2. 9.
[Hpple Parser] HTML Parser 2장 - 파싱하기 파싱하려는 사이트는 기상청(http://www.kma.go.kr/index.jsp)입니다. 날씨가 아닌 국외 지진목록(http://www.kma.go.kr/weather/earthquake/internationallist.jsp)을 파싱해보겠습니다. ================================================================================ 뷰컨트롤러를 추가합니다. ParserHppleAppDelegate.h 로 갑니다. #import "FirstViewController.h" =============================================================================== 만들어준 FirstViewContr.. 2012. 2. 9.
[Hpple Parser] HTML Parser 1장 - Hpple 추가하기 안녕하세요. 오랜만에 글을 쓰는거 같습니다. 이번에 해볼것은 파싱인데요, Hpple를 이용해서 파싱해보려고 합니다. 파싱해서 자료를 가져온뒤, 테이블뷰와 맵뷰에 뿌려줄꺼에요. 아마 시간이 많이 걸리겠지요.......... 하여튼 시작합니다. ============================================================================ 기존에 해오던데로 IB없이 합니다. 새 프로젝트를 만들어 줍니다. 윈도우-베이스 형식으로 만들어 주세요. 프로젝트명은 알아서 정해주세요. 첨부해드린 압축파일을 푸시면 7개의 파일이 보입니다. 이걸 폴더채 프로젝트폴더 내에 Classes 폴더에 복사해주세요. /ParserHpple/Classes/Hpple가 되겠습니다. 그런뒤에 엑스.. 2012. 2. 9.
UIPickerView 여러 열 사용하기 아래와 같은 모양을 가지는 PickerView 를 만들어 보겠습니다. 버스의 출발 시간을 나타내는 PickerView 입니다. 왼쪽의 시를 선택하면 오른쪽의 분이 자동적으로 바뀝니다. 우선 ViewBased 로 시작하여 xxxxxxx~ViewController.xib 파일을 열고 PickerView 를 배치합니다. xxxxxxxAppDeleate.h 헤더파일에 UIPickerView 객체를 선언합니다. dataSource 와 delegate 를 File's onwer 에 연결시키고 (PickerView에서 오른쪽버튼 클릭 하면 나옴) 만들어둔 객체변수 picker 도 File's Owner 에 연결합니다. 소스코드.... PickerViewTestViewController.m #import "Picker.. 2012. 2. 7.
수동으로 UI 컨트롤에 이벤트 전달 UI 컨트롤에 등록된 이벤트 핸들러가 정상적으로 호출되는지 테스트를 하거나, 그와 동일한 효과를 로직에서 처리해야할 경우 수동으로 컨트롤에 이벤트를 발생시킬 수 있다. sendActionsForControlEvents: 메시지를 사용하여, 대상이 되는 컨트롤의 인스턴스에 이벤트 종류를 지정하여 전달한다 . UIButton *btn = (UIButton*)[self.view viewWithTag:1001]; [btn sendActionsForControlEvents:UIControlEventTouchUpInside]; Control 에 전달할 수 있는 이벤트 종류는 다음과 같다. enum { UIControlEventTouchDown = 1 2012. 2. 7.
[iPhone] 로깅 프레임웍 cocoalumberjack 아이폰에서 사용할 수 있는 Log4j 같은 로깅 프레임웍을 찾아 구글링을 하다, cocoalumberjack 이라는 프레임웍을 찾게 되었다. 사용법도 log4j 와 유사하면서, 설정하기 쉽고, NSLog 보다 빠른속도와 커스텀 로거를 작성할 수 있는 유연성도 제공한다. 실제로 사용해보고, 유용성에 대해서는 추후 포스팅 해야겠다. 아래 주소에서 프레임웍 소스를 다운받자. (svn 으로 체크아웃하자) http://code.google.com/p/cocoalumberjack/ Lumberjack( 이름이 머 이래 -_-;;) 의 사용법은 다음과 같다 1 소스를 아이폰 프로젝트에 복사한다 (logging이라는 폴더를 만들고, lumberjack 폴더를 통째로 복사했다) 2 프레임웍 사용을 위한 설정을 한다. 사.. 2012. 2. 7.
애플리케이션 응답성 향상을 위해 동시성 사용하기 1. 애플이케이션에서의 응답성 아이폰, 아이패드를 포함한 모든 애플리케이션의 사용자 인터페이스에 있어서 응답성은 중요한 요소중에 하나이다. 많은 시간을 소비하는 태스크를 사용자 인터페이스가 동작하는 쓰레드에서 수행하면, 해당 태스크가 종료하기 까지 사용자는 어떠한 인터렉션도 행할 수가 없기 때문이다. 트위터의 글목록을 가져와서 보여주는 앱을 생각해보자. 최신글 목록과 사용자 프로필 이미지를 가져오는 동안, 버벅이 되며 먹통이 되면 누가 이 앱을 사용하겠는가? 이 포스팅에서는 Cocoa Touch에서 지원하는 동시성 향상을 방법에 대해서 알아보겠다. MacOsX와 iOS에서 지원하는 사용자 인터렉션 응답성을 향상시키기 위한 다음과 같은 동시성 방법들이 있다. NSThread / NSObject가 지원하는 .. 2012. 2. 7.
애플 푸시 서비스 이 포스팅에서는 애플 푸시 서비스를 사용하는 방법에 대해서 알아보자. 작년 겨울 앱공모전을 준비하면서 "분실물 다나와" 라는 앱을 개발했다. 서울 분실물 센터에 수거되어 있는 분실물 목록을 조회할 수 있고, 등록된 분실물과 유사한 분신물 목록을 사용자 아이폰으로 알리는 앱이었다. 이때 유사 분실물 발견유무를 푸시 기능을 통해 구현하였다. 당시에 푸시와 관련된 자료가 별로 없어서(내가 못찾았겠지만...) 애플 개발자 가이드 문서를 참고하여 구현하였다. 그 때 정리한 내용을 올려본다. (사진 캡처를 안해서 이해가 잘 안될 수도....-_-;; ) 1. Push Service 란? 서버에서 아이폰 애플리케이션으로 데이터를 역으로 전송할 수 있는 서비스이다. Remote Notification을 등록하고 수신하.. 2012. 2. 7.
푸시 메시지 포맷 Provider와 APNS 간에 SSL(Secure Socket Layer)를 통해 통신을 하며, 서로 간에 올바른 통신을 위한 몇 가지 요구사항이 존재한다. 다음은 Local, Remote Notification Programming Guide 문서에서 일부 발췌한 내용이다. 자세한 내용은 실제 문서를 참고하자. 1. Provider가 APNS와 통신하기 위한 요구사항 〮 Provider는 Apple Push Notification Service와 바이너리 인터페이스를 사용해 통신함 〮 TCP Socket을 사용하며, 안전한 통신채널을 위해 TLS(또는 SSL)을 사용함 〮 APNS와의 잦은 연결과 종료는 DOS 공격으로 오인받을 수 있음 〮 에러가 발생하면 APNS는 해당연결을 종료함 〮 서버에 접속.. 2012. 2. 7.
NSNotification Cocoa 와 Cocoa Touch 프레임웍의 이벤트 통지 메커니즘인 NSNotification 에 대해서 간략하게 알아보자. 1. NSNotification 이란? 다수의 객체들 사이에서 이벤트가 발생했음을 알리는 방식으로, 한 객체와 다른객체 간에 의존관계를 중계하는 클래스에 집중화시켜서 서로 간에 결합도를 느슨하게 할 수 있다. NSNotificationCenter, NSNotification, Observer 로 구성된다. NSNotificationCenter는 객체들 사이에 이벤트 전달을 중계하는 역할을 하며, Observer는 이벤트가 발생하기를 기다리는 대상을 나타낸다. Observer 가 기다리는 이벤트에 대한 정보와 부가적인 데이터를 전달하기 위한 객체가 Notification 이다. O.. 2012. 2. 7.
아이폰 Document 폴더의 파일,폴더 리스트 보기 BOOL flag = NO; //파일 매니져 생성 NSFileManager* fileManager = [NSFileManager defaultManager]; // Document 디렉토리 불러옴 NSString* rootDir = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; // 디렉토리 열거자 생성 NSDirectoryEnumerator *enumerator = [fileManager enumeratorAtPath:rootDir]; NSString *path; // nextObject 이용 파일이름을 불러옴 while( (path = [enumerator nextObject]) != nil ){ // fileExistsAtPath.. 2012. 2. 7.
페이스북 담벼락과 연동되는 아이폰 앱 만들기 페이스북과 연동되는 아이폰 앱 만들기 출처 페이지 링크 https://developers.facebook.com/docs/guides/mobile/ 삽질하다 겨우 담벼락에 글올리기 성공해서 정리해본다. 가장먼저 자신의 앱을 facebook 에등록해야한다.. 다음 링크로 들어간다. https://developers.facebook.com/ 물론 facebook 아이디가 있어야 한다 로그인 한 뒤에 위 메뉴에서 앱으로 들어간다 https://developers.facebook.com/apps 이곳으로 들어와서 우측 상단에 보면 새 앱 만들기 링크가 있다 클릭한다. 클릭하면 다이얼로그가 하나 뜨는데 여기에 자신의 앱 이름을 입력하고 지역을 선택하고 I agree to the Facebook Terms. 에 체.. 2012. 2. 7.
전국 광역시도 위도 경도 delta 값 sqlite query.... create table regions ( location text, lat double, lng double, latDelta double, lngDelta double ); INSERT INTO regions VALUES( '서울시', 37.540705, 126.956764, 0.551279, 0.483654 ); INSERT INTO regions VALUES( '인천광역시', 37.469221, 126.573234, 0.513281, 0.449886 ); INSERT INTO regions VALUES( '광주광역시', 35.126033, 126.831302, 0.488798, 0.415746 ); INSERT INTO regions VALUES( '대구광역시', 35.. 2012. 2. 7.
맵뷰 핀 클릭시 이미지 비동기로 불러오기 위 스크린샷과 같이 이미지를 각 핀마다 다르게 보여주고 싶은 경우가 있다. 이때 모든 핀 이미지를 로드하게 되면 터치되어 보이지도 않는 이미지를 로드하게되어 비효율적이다. 더군다나 맵 뷰 로드시 이미지를 불러오게 되면 멀티쓰레드를 사용하지 않는 이상 메인 쓰레드가 멈추게 되어 당분간 아무런 터치에도 반응하지 않게 된다. (핀이 많은 경우에는 각각의 이미지를 불러오므로 엄청나게 긴 시간동안 터치에 반응하지 않는다.) -(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id)annotation 이미지를 넣는 방법은 위 메소드가 호출될때 MKPinAnnotationView 객체를 만들어 pin.image 에 이미지 뷰를 주면 된다. 이 메.. 2012. 2. 7.
MKMapview의 주석(Annotation)을 통해 상세뷰로 넘어 갈때, 인덱스 값 찾기. 거두절미 하고 본론으로 들어 가죠!^^ 위와 같이 지도에 여러개의 주석(Annotation)이 있다고 가정해봅시다. 해당 주석을 선택한 뒤 상세보기버튼을 통해서 상세보기(디테일뷰)뷰로 넘어 가야하는 일이 종종 있습니다. 이때!! 해당 주석이 몇번째 주석인지 알아야 해당하는 순서의 상세보기 뷰를 제대로 전달 할 수 있습니다. 이틀동안 이런저런 방법을 통해본 결과.. 단 3줄로 해결하는 방법이 있었습니다. 아래의 방법을 보시겠습니다.! 위의 그림1의 빨간색 사각 박스영역을 보세요! self.indexPin 은 어노테이션 오브젝트들이 저장되어 있는 NSMutableArray 입니다. 여기에 indexOfObject를 통해 지금 생성되고 있는 주석이 배열에서 몇번째 오브젝트인지 구합니다. 이것을.. 2012. 2. 6.
동기적으로 동작하는 UIAlertView (Custom UIAlertView) UIAlertView *WaitPrompt() { UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"Contacting Server\nPlease Wait..." message:nil delegate:nil cancelButtonTitle:nil otherButtonTitles: nil] autorelease]; [alert show]; UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; indicator.center = CGPointMake(aler.. 2012. 2. 5.
커스텀 Action Sheet 사용하기 CustomActionSheet类继承UIActionSheet,具体的实现如下所示: (1)CustomActionSheet.h头文件: #import @interface CustomActionSheet : UIActionSheet { UIToolbar* toolBar; UIView* view; } @property(nonatomic,retain)UIView* view; @property(nonatomic,retain)UIToolbar* toolBar; -(id)initWithHeight:(float)height WithSheetTitle:(NSString*)title; @end (2)CustomActionSheet.m实现文件: #import "CustomActionSheet.h" @implementation C.. 2012. 2. 4.
아이폰 OS 개발 자료 총정리 원문 : http://improgrammer.com/12 KT앱 대회 준비하면서 모은 자료들을 정리해서 올립니다. 거의 맥부기 카페 자료들이 대부분인데 한곳에 모아서 찾아보기 쉬우라고 올려봅니다. -푸쉬 서버 개발 관련 자료- 이지 APNS 오픈 소스 라이브러리 http://www.easyapns.com/ 구글 코드 APNS 오픈 소스 http://code.google.com/p/apns-php/ 서버 튜토리얼 http://blog.boxedice.com/2009/07/10/how-to-build-an-apple-push-notification-provider-server-tutorial/ -label이나 textView에 현재 시간을 표시하고 싶습니다- NSDate *t = [NSDate date]; .. 2012. 2. 4.
XML 파싱을 쉽게 해주는 TBXML XML 파싱할때 직관적으로 코딩할 수 있는 TBXML을 소개합니다. 아래는 예제파일에 포함된 소스코드 일부분입니다. 대략 이런식으로 코딩이 가능합니다. 참고하세요. ^^ // instantiate an array to hold author objects authors = [[NSMutableArray alloc] initWithCapacity:10]; // Load and parse the books.xml file tbxml = [[TBXML tbxmlWithXMLFile:@"books.xml"] retain]; // Obtain root element TBXMLElement * root = tbxml.rootXMLElement; // if root element is valid if (root) { .. 2012. 2. 2.
달력라이브러리 - TapkuLibrary 사용법 동영상 소스다운로드는 아래링크를 참조하세요. http://developinginthedark.com/posts/iphone-tapku-calendar-markers 2012. 2. 1.
달력 라이브러리 Tapku 사용법 Tapku Library: Displaying Calendar Markers on iPhone How to add markers/dots to days using the Tapku Calendar component. 10th Jan 2011 Context It's been a quiet few months on Developing in the Dark. I've found myself consumed in iOS development both at work and in any spare time I can find (which is never as easy to find as you'd like it to be). A recent project at work, Nightvibes, required the.. 2012. 2. 1.
아이폰 Calendar Library Cocoa Touch: iPhone Calendar Month View Class : 에서 소개하고 있는 TapkuLibrary. iPhone Tutorial: Adding a Calendar : 튜토리얼 프로젝트 다운로드 가능. 출처 : http://lambert.tistory.com/258 2012. 2. 1.