본문 바로가기

프로그래밍/iOS243

전국 광역시도 위도 경도 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.
xcode 4.0에서 gh-unit을 이용해서 unittest 하기.. xcode 4.0으로 넘어 가면서.. 이래저래 익숙하지 않아서 난감한게 많네요. 코드를 작성하다가.. unittest를 하려고 하다 보니.. 4.0에서는 또 다른 일이네요 -_-;; 적용하다가.. 알게된 gh-unit이라는 라이브러리가 있어서.. 4.0용에서 사용 하는 과정을 정리해 봤습니다. 이게 ui도 잘 되어 있고, 훨씬 좋더라구요 ^^; https://github.com/gabriel/gh-unit 시작 하시기 전에 기존 프로젝를 띄우시거나, 빈 프로젝트를 띄어 줍니다. 1. target 추가 하기. File > New > New Target... 으로 타겟을 추가해 줍니다. Application > Window-based Application 을 선택해 줍니다. 여기선 tests라는 이름으로 타.. 2012. 1. 18.
MapView에 특별한 Annotation 붙이기 보통 PinAnnotationView으로 모양을 많이 내지만 특별하게 사용자 맘대로 그리고 싶을 때 역시 방법이 있더라. 뭐 구조상 당연히 가능하겠지만. PinAnnotationView는 MKAnnotation을 MapView에 박았을 때 mapView:viewForAnnotation을 통해서 넘겨주는 View의 일종일 뿐이지. 그렇다면 이런 AnnotationView구조를 상속받아서 붙여보면 아마도 될거다. 우선 Annotation 부터 @interface SomeAnnotation : NSObject { } @property (nonatomic, readonly) CLLocationCoordinate2D coordinate; @end @implementation SomeAnnotation @synth.. 2012. 1. 16.
MapView MapView는 기본적으로 화면에 지도를 표시해주고 좌표를 물리적인 주소로 반환해주거나 특정지역에 핀을 꽂고 설명을 달수도 있다. MapView는 구글 지도 서비스를 이용하며 사용하기 위해서는 MapKit.framework를 포함 시켜줘야 하고, 위치 정보도 함께 이용을 하기 위해서는 CoreLocation.framework도 포함 시켜줘야 한다. 맵 뷰에서 사용자는 확대나 축소를 위한 핀치 더블 탭등의 제스처를 사용할수 있고 이러한 반응에 대한 관리는 Delegate에서 한다. 맵 뷰의 표현 방식에는 3가지 방식이 있다. ================================================================================== enum { MKMapTypeSta.. 2012. 1. 16.
위치정보를 이용하는 어플 예제 GPS리시버를 사용하여 우주에 떠 있는 인공위성을 통해 현재 위치를 간단하게 알 수 있다. 단, GPS리시버가 정확하게 처리되게 만들려면 GPS신호 수신 가능범위에 있어야 한다. 그래서 건물내에서는 불가능하다. 그 외 자신의 위치를 아는 방법중 하나는 휴대전화의 안테나에 의한 삼각측량방법이 있다. 대기 상태의 휴대전화는 범위내 기지국에 연결한 상태를 가지고 있다. 그런 안테나탑 ID를 알 수 있다면, 안테나탑ID와 지리적 위치가 기록된 데이터베이스를 사용하여 물리적인 위치를 계산할 수 있다. GPS와 달리, 안테나탑 삼각측량은 위성을 사용하지 않기 때문에 실내에서 사용가능하다. 단, 이 방법으로 계산된 위치정보는 자신이 있는 영역내 안테나탑 끼리 간격에 좌우되므로, GPS만큼 정확하지는 않다. 이 방법은.. 2012. 1. 16.
iOS (iPhone,iPod touch) 의 MKMapView 정리하기 - 개인적인용도로 요약한 글이라 글에서는 경어체를 사용하지 않습니다. 글 읽으시는데 참고부탁드립니다. - Mac의 Pages 로 작성한 후 블로그에 포스팅하려니 서식이 다 깨졌네요. PDF 파일로 보는것이 보기 좋습니다. 저번엔 안드로이드용 위치기반 지점찾기 (LBS)를 구현하였고, 이번에 아이폰용 뱅킹어플을 만들면서 아이폰용도 지점찾기를 어플로 구현할 필요가 생겼다. 이번엔 계속 써와서 익숙한 Java 가 아니라 Objective C 여서 시작하기가 막막했다. 배우면서, 삽질하며 완성시킨거라 버그도 있을것이고 여러부분에서 미숙한 점이 있을테지만 마찬가지로 까먹지 않기 위하여 정리를 해둔다. 1. 프로젝트에 프레임웍 추가하기. 프로젝트의 프레임웍에서 마우스 오른쪽버튼 (또는 옵션클릭)을 하여 프레임웍을 .. 2012. 1. 16.
Push Notification 적용하기 #2. 앱 수정 Registering for Remote Notifications 애플리케이션이 프로바이더로 부터 Remote Notifications(푸시 알림)을 받기 위해서는 다음 그림과 같은 일련의 등록 과정을 거쳐야 한다. 등록 과정은은 3단계로 나눠지며, 실제로 서비스 될 앱을 개발할 경우 등록 후 발급받은 디바이스 토큰을 프로바이더로 전달해주는 과정이 추가로 필요하다. 여기서는 애플리케이션이 푸시 알림을 사용할 수 있는 '최소한의' 과정만을 설명한다. 실제 프로젝트에서는 더욱 많은 소스 코드가 필요하다. Local and Push Notifications Programming Guide, Apple * 알림을 발생하는 서비스를 프로바이더(Provider)라 한다. registerForRemoteNotific.. 2012. 1. 13.
Push Notification 적용하기 #1. SSL 인증서 생성 APNS (Apple Push Notification Service) iOS 기반의 서버/클라이언트(앱) 서비스 개발시, 서버에서 발생한는 다양한 이벤트나 데이터를 클라이언트에 전달하기 위해서는 APNS를 사용해야만 한다. iOS는 백그라운드 프로세스를 '제한적으로만' 제공하기 때문에 안드로이드처럼 폴링 방식을 사용할 수 없기 때문이다. 폴링 방식은 백그라운드 프로세스를 통해 서버와의 연결을 지속적으로 유지해야 하며, 짧은 주기로 서버와 통신을 해야 한다. 적은 메모리와, 더럽게 적은 배터리같이 한정된 자원을 가진 스마트폰이나 스마트패드에서 사용하기에는 껄끄로운 방법이다. 대신, 애플은 APNS라는 아주 세련된 방법을 통해 아이폰에게 데이터를 '던져' 줄 수 있는 방법을 제공한다. 배터리 걱정도 없고 보.. 2012. 1. 13.
UIImage에서 그림 그리는 방법 UIImage에서 그림 그리는 방법 by alex 4. 5월 2009 13:15 -(UIImage *)addCircle:(UIImage *)img radius:(CGFloat)radius latCon:(CGFloat)lat lonCon:(CGFloat)lon{ int w = img.size.width; int h = img.size.height; lon = h - lon; CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); CGContextRef context = CGBitmapContextCreate(NULL, w, h, 8, 4 * w, colorSpace, kCGImageAlphaPremultipliedFirst); //draw the circ.. 2012. 1. 12.
간단한 손가락으로 그리기 소스 1. --> 아 제 프로젝트라 ;; 파일명 신경쓰지 말아주세요 ㅎ #import @interface webViewer : UIViewController { UIImageView *drawImage; BOOL mouseMoved; BOOL mouseSwiped; CGPoint lastPoint; CGPoint currentPoint; } @property (nonatomic, retain) UIWebView *web; @end 2. #import "webViewer.h" @implementation webViewer @synthesize web; - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = .. 2012. 1. 12.
uiimageview위에 그림 그리기 헤더파일 @interface CustomView: UIViewController { UIImageView *drawImage; CGPoint lastPoint; CGPoint currentPoint; } // xib파일과 연결된 UIImagView의 프라퍼티 @property (strong, nonatomic) IBOutlet UIImageView *drawImageView; @end .m파일 // Override메서드 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { NSLog(@"touch began"); UITouch *touch = [touches anyObject]; // 3번 터치하면 이미지 초기화 if ([touch tap.. 2012. 1. 12.
터치가 발생했을때 뷰 위에 직접 그림을 그리기 위한 코드 MyUIView.h #import @interface MyUIView : UIView { NSSet *touches; } @property(nonatomic, retain) NSSet *touches; @end #import "MyUIView.h" MyUIView.m @implementation MyUIView @synthesize touches; #pragma mark - #pragma mark DrawFuction -(void)drawRect:(CGRect)rect{ CGContextRef context = UIGraphicsGetCurrentContext(); //그리기 작업을 위해 그래픽 컨텍스를 얻음 CGFloat gray[4] = {0.5f, 0.5f, 0.5f, 1.0f}; CGContext.. 2012. 1. 12.
UILabel 세로 정렬하기 ( Vertical align ) 구글링을 해보니 UILabel은 세로 정렬이 원래 없나부다.. 그래서 다음과 같은 함수를 만들어서 쓴다.. 누가 만들었는지 감사하다..ㅋ 덕분에 금방해결~ - (void)setUILabel:(UILabel *)myLabel withMaxFrame:(CGRect)maxFrame withText:(NSString *)theText usingVerticalAlign:(int)vertAlign { CGSize stringSize = [theText sizeWithFont:myLabel.font constrainedToSize:maxFrame.size lineBreakMode:myLabel.lineBreakMode]; switch (vertAlign) { case 0: // vertical align = top .. 2012. 1. 12.
UIImageView 테두리넣기 및 모서리 깎기 일단 기본 메소드로는 제공을 하지 않아서 UIImageView 의 layer를 직접 손대야 한다. 일단 #import 헤더파일을 임포트하고 [thumbImgView.layer setBorderColor:[RGB(140, 200, 251) CGColor]]; [thumbImgView.layer setBorderWidth:2]; [thumbImgView.layer setMasksToBounds:YES]; [thumbImgView.layer setCornerRadius:6]; thumbImgView 객체의 레이어에 직접 메소드를 이런식으로 불러주면 RGB 140/200/251 색에 2픽셀짜리 테두리가 생기고, 6픽셀만큼의 테두리를 둥글게 처리해준다. 일단은 리젝사유는 아닌 것 같으니 (이 코드가 들어있는 앱이.. 2012. 1. 11.
UIImageView에 라운딩 처리 UIImageView *image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"item.png"]]; //라운딩처리 image.layer.cornerRadius = 5.0; image.layer.masksToBounds = YES; //라운드 테두리 image.layer.borderColor = [UIColor lightGrayColor].CGColor; image.layer.borderWidth = 1.0; QuartzCore Framework를 포함해야함. 이렇게 좋은 방법이 있는줄도 모르고 그냥 이미지 자체에 뽀샵으로 라운딩 처리할라고 했네.ㅋㅋ 무식하면 몸이 고생이라지. ㄷㄷㄷㄷㄷㄷ 출처:UIImageView에 라운딩 처리 2012. 1. 11.