본문 바로가기

전체 글1040

Custom segmented controls 주제 : 세그먼트 컨트롤을 커스텀 한다. Cocoa 터치 프레임워크에는 다음 4가지 타입의 세그먼트 컨트롤이 존재한다. 색상 및 디자인은 변경이 불가능하다. Apple 문서를 보면 세그먼트 컨트롤의 경우 단순한 버튼 그룹이라고 소개하고 있다. 때문에 버튼을 이용해서 세그먼트 컨트롤을 만들 수 있다. 커스텀 세그먼트 컨트롤 헤더 파일 먼저 정의된 헤더 파일을 살펴 보자. CustomSegmentedControlDelegate라는 delegate를 선언하고 buttonFor:atIndex:메서드를 선언한다. 이는 델리게이터가 실제 이미지를 드로잉하는 부분을 위임하게 된다. optional 델리게이터 메서드는 이벤트에 대한 액션(버튼 클릭시) 처리를 해준다. buttons는 세그먼트 컨트롤의 구성요소인 버튼을.. 2012. 4. 25.
Cropping Images using Graphic Contexts 주제 : Core Graphics API 사용해 이미지를 자르고 늘리는 작업을 한다. 이미지 늘리기 다음은 1px을 가지는 이미지를 UIImage 클래스가 지원하는 stretchableImageWithLeftCapWidht:topCapHeight: 메서드를 이용해 이미지 뷰를 만드는 방법이다. 이와 같은 방법으로 패턴 이미지도 생성이 가능하고 간단하게 이미지를 변형이 가능하다. UIImage *image = [[UIImage imageNamed:@"1px-blue-divider.png"] stretchableImageWithLeftCapWidth:0.0 topCapHeight:0.0]; UIImageView *imageView = [[[UIImageView alloc] initWithImage:image.. 2012. 4. 25.
한 번에 루트 뷰 컨트롤러 표시하기 UINavigationController 사용 시, 스택에 여러 뷰 컨트롤러가 쌓여 있어도 다음 메시지를 통해 한 번에 RootViewController를 표시할 수 있다. 1[self.navigationController popToRootViewControllerAnimated:YES]; 처음부터 알았었다면 아래와 같은 삽질은 하지 않았을 텐데. 12345// 삽질입니다. for (int i = 0; i < [self.navigationController.viewControllers count]; i++){ [self.navigationController popViewControllerAnimated:NO];} 출처 : http://sunsideup.tistory.com/category/%EA%B0%9.. 2012. 4. 25.
Push Notification 적용하기 #2. 앱 수정 Registering for Remote Notifications 애플리케이션이 프로바이더로 부터 Remote Notifications(푸시 알림)을 받기 위해서는 다음 그림과 같은 일련의 등록 과정을 거쳐야 한다. 등록 과정은은 3단계로 나눠지며, 실제로 서비스 될 앱을 개발할 경우 등록 후 발급받은 디바이스 토큰을 프로바이더로 전달해주는 과정이 추가로 필요하다. 여기서는 애플리케이션이 푸시 알림을 사용할 수 있는 '최소한의' 과정만을 설명한다. 실제 프로젝트에서는 더욱 많은 소스 코드가 필요하다. Local and Push Notifications Programming Guide, Apple * 알림을 발생하는 서비스를 프로바이더(Provider)라 한다. registerForRemoteNotific.. 2012. 4. 25.
Push Notification 적용하기 #1. SSL 인증서 생성 APNS (Apple Push Notification Service) iOS 기반의 서버/클라이언트(앱) 서비스 개발시, 서버에서 발생한는 다양한 이벤트나 데이터를 클라이언트에 전달하기 위해서는 APNS를 사용해야만 한다. iOS는 백그라운드 프로세스를 '제한적으로만' 제공하기 때문에 안드로이드처럼 폴링 방식을 사용할 수 없기 때문이다. 폴링 방식은 백그라운드 프로세스를 통해 서버와의 연결을 지속적으로 유지해야 하며, 짧은 주기로 서버와 통신을 해야 한다. 적은 메모리와, 더럽게 적은 배터리같이 한정된 자원을 가진 스마트폰이나 스마트패드에서 사용하기에는 껄끄로운 방법이다. 대신, 애플은 APNS라는 아주 세련된 방법을 통해 아이폰에게 데이터를 '던져' 줄 수 있는 방법을 제공한다. 배터리 걱정도 없고 보.. 2012. 4. 25.
ZBar 라이브러리를 이용한 바코드 스캔 앱 개발하기 ZXing 라이브러리로 테스트삼아 개발한 앱이 1D 바코드 스캔 시 에러를 계속 뱉어 낸다. 이유를 알 수 없어 ZXing 구글코드 위키를 살펴보니, iOS용 ZXing 라이브러리는 1D 바코드를 읽을 수 없다고 한다. 생각보다 빨리 끝났다 생각해서 몇 일 칼퇴근했구만..아놔.. 마음 같아서는 RedLaser SDK라도 사서 쓰자고 하고 싶었지만 가격보고 포기했다. XZing을 제외한 쓸만한 iOS용 바코드 스캔 라이브러리는 죄다 유료인 와중에, 개발자들의 성지 스택오버플로우의 양덕 개발자 댓글을 통해 ZBar라는 바코드 스캔 라이브러리를 찾았다. XZing과 비교해 사용법도 간단하고 기능도 쓸만한다. (실제 앱 스토어에 올라가 있는 앱의 소스코드까지 제공을 하니 스터디 용도로 사용해도 좋을 듯 하다) .. 2012. 4. 25.
ZXing 라이브러리를 이용한 QR코드 리더 앱 개발하기 #2. 앱 구현하기 이전 포스팅에서 이어집니다. 2011/09/05 - [공부/iOS] - ZXing 라이브러리를 이용한 QR코드 리더 앱 개발하기 #1. ZXing 라이브러리 추가 루트 뷰 컨트롤러 추가 닙(Xib) 파일을 포함하는 새 뷰 컨트롤러를 프로젝트에 추가한다. 이름은 RootViewController로 한다. 추가 후 ZXingTestAppDelegate.m 파일과 RootViewController.m 파일의 확장자를 'mm' 으로 변경한다. * 프로퍼티 선언, 릴리즈 코드는 생략. RootViewController.xib QR코드 스캔 결과를 표시할 읽기 전용의 UITextField 컨트롤과 UIButton 컨트롤을 추가한다. RootViewController.h ZXingDelegate 프로토콜을 추가하고 .. 2012. 4. 25.
ZXing 라이브러리를 이용한 QR코드 리더 앱 개발하기 #1. ZXing 라이브러리 추가 ZXing (Zebra Crossing) 라이브러리는 자바로 개발된 바코드 프로세싱 오픈소스 라이브러리다. 자바로 개발되었지만 다양한 플랫폼을 위한 모듈들을 제공한다. 여기서는 ZXing 라이브러리를 이용하여 iOS 기반의 QR코드 리더 앱을 개발하는 과정을 간단하게 설명한다. 프로젝트 생성 1. Window-based Application 프로젝트를 선택하여 'ZXingTest' 프로젝트를 생성한다. ZXingWidget 라이브러리 추가 1. 다운로드 받은 ZXing 라이브러리의 압축을 해제하고 zxing 폴더를 ZXingTest 프로젝트 폴더에 복사한다. 실제로 필요한 폴더는 zxing/cpp 폴더와 zxing/iPhone 폴더다. 두 폴더의 절대 경로만 정확하게 알고 있다면 위치는 크게 상관없다. .. 2012. 4. 25.
zbar & beep sounds for QR code zbar 라는 오픈 소스입니다.. http://itunes.apple.com/ca/app/zbar-barcode-reader/id344957305?mt=8 로 어플로 나와있기도 한데... 예제도 잘돌아가고 인식율도 좋습니다. 일반 바코드, QR코드 다 인식됩니다. objective-c뿐만아니라.. 여러 언어에 대한 샘플도 있네요 hmall search 어플도 이걸 이용했다고 나오고.. http://zbar.sourceforge.net/ 샘플및 적용방법: http://sourceforge.net/apps/mediawiki/zbar/index.php?title=HOWTO:_Add_a_barcode_reader_to_an_iPhone_app 파일 첨부하였습니다 출처에대한 description 넣어주고 붙여도 .. 2012. 4. 25.
Skinning a UIProgressView with drawRect and images Here is an easy way that I’ve come up with to skin the default UIProgressView in an iOS application using just 2 images, and implementing the drawRect: method. This is what the default progress view looks like: …and here is our custom skinned version. To achieve this you will need 2 images: one for the background, and one for the fill. The images that I’ve shown here were designed by Darran Morr.. 2012. 4. 25.
iOS 앱 개발시 AES 256으로 데이터 암호화하여 저장하기와 복호화하여 읽어오기 출처 : http://blog.saltfactory.net/118 iOS 는 보안상 자신의 앱에서 접근할 수 있는 Sandbox를 제외하고 접근하면 앱 리뷰에서 reject를 당한다. 보안상 앱이 접근할 수 있는 Diectory는 제한이 되어 있다. 아래 그림은 아이폰 앱에서 접근할 수 있는 Sandbox를 그림으로 표현한 것이다. Documents는 iCloud가 서비스가 오픈되고 나서 부터는 백업이 가능한 디렉토리로 임시 파일을 저장하면 reject의 사유가 된다. Library 안의 Caches 디렉토리에 파일을 저장하면 iCoud 자동 백업 목록에서 제외하여 저장할 수 있도록 되었다. < 이미지 출처 : http://developer.apple.com/library/mac/#documentatio.. 2012. 4. 24.
iCloud관련 리젝 사례 이번엔 두가지 이유로 거절당했다. In App Purchases 에서 null 값으로 표시되는 것과 iOS 5.0 iCloud을 위한 데이터 저장 정책을 따르지 않은 이유다. 첫번째 문제는 App Rejected 가 되면 In App Purchases 의 Review도 같이 Rejected 되는데 이 경우 서버로부터 값을 제대로 받아오지 못한다. 코드상 문제는 없었고 단지 IAP의 Status을 Rejected에서 Waiting for review로만 바꾸기만 해서 해결했다. 두번째 문제는 iOS iCloud 데이터 저장 정책인데 이전과 달리 꽤나 엄격하게 심사를 한다. 심지어 다운로드받은 파일이 얼마나 Document 에 저장되는지도 체크해서 용량까지 알려준다. 4.5MB도 허용 안해~! In part.. 2012. 4. 24.
iCloude관련 리젝시 이미 관련글이 올라와 있는지는 모르겠지만... 아이클라우드 약관이 생기면서,.,. 도큐멘트 폴더에 저장을 하게 되면 리젝을 먹는 경우가 있습니다. 애플에서는 도큐멘트 폴더를 아이클라우드가 가져가지 못하게 하는 코드를 알려주더군요. 이 코드는 iOS5.0.1버전 부터 지원합니다. 이렇게 사용해 보고 아이클라우드로 다시 백업을 해보니~ 가져가지 않았더군요..... 5.0버전 이하는 아이클라우드가 없으니까 처리를 안해줘도 되고...5.0.1버전부터 지원하는 거라....5.0은 어떻게 하나 걱정을 했는데... 일단 5.0.1이상만 처리해서 올렸는데 통과는 되더군요... 간단한 팁이었습니다.... //iCloud 막을 Document경로 설정 NSString *documentPath = [NSSearchPathF.. 2012. 4. 24.
언어코드와 지역코드 아이폰 앱을 개발한다면, 국제화와 지역화는 당연한 선택이 될 것이다. 다음 두 링크에서 언어코드와 지역코드 목록을 확인할 수 있다. ko_KR 언어코드_지역코드 언어코드: Codes for the Representation of Names of Languages Alpha-3 codes arranged alphabetically by the English name of language 지역코드: ISO 3166-1 English Name of Language All English Names All French Names ISO 639-2 ISO 639-1 Abkhazian Abkhazian abkhaze abkab Achinese Achinese aceh ace Acoli Acoli acoli ach A.. 2012. 4. 23.
파일 이어받기 // bytes=?-Range로 이어받기 기능.// NSURLConnection로 파일 다운로드NSString *range = [NSString stringWithFormat:@"bytes=%d-", [_receivedData length]];NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:fileURL]];[request setValue:range forHTTPHeaderField:@"Range"];_urlConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 로 하시면 됩니다._receivedData 는 NSU.. 2012. 4. 18.
XCode 4.2에서 Distribution 하기 1. Product->Edit Scheme -> Archive : 오른쪽 창에서 Build Configuration 하기2. Code Sign -> Release3. Product-> Archive4. Organize->Archives에 생성된 버젼 Submit 하기 2012. 4. 17.
2012 안드로이드 개발 프로그램 설치방법 - 5 환경설정 출처 : http://blog.naver.com/theparanbi/80153328747 5부는 한글폴더 문제를 보완하기 위해 전체적으로 수정했습니다.5. 환경 설정하기 앞의 1, 2, 3, 4 단계를 통해 필요한 프로그램 설치는 다 끝났습니다. 그러나 아직 끝난 것이 아닙니다. 개발을 위한 사용 환경 설정을 만들어줘야 합니다. SDK 패스를 넣어주는 일과 이클립스에 AVD를 구성하는 일이죠. 1. SDK 패스 작성 : JAVA SDK와 안드로이드 툴을 연결하여 작업 환경을 구성해주는 작업2. AVD 만들기 : 지금까지 설치가 제대로 되었는지 테스트 하는 과정 우선 SDK 패스 설정을 하겠습니다. 여기선 Windows 7을 기준으로 설명 드리겠습니다. 패스 설정이 안 되어 있으면 프로그램 컴파일할 때 무.. 2012. 4. 5.
2012 안드로이드 개발 프로그램 설치방법 - 4 안드로이드 SDK 설치 출처 : http://blog.naver.com/theparanbi/80153324190 4. 안드로이드 SDK 설치 ( 화면 3.17 ) 앞 단계에 나온 화면 3.17에서 Target Location을 화면 3.18과 같이 C:\android\android-sdks로 바꿉니다. 다른 위치를 지정해도 되나 전에 만든 C:\android\workspace에 묶어 주기 위해서 같은 위치의 폴더로 잡은 것입니다. 만일 전에 안드로이드 SDK를 설치 해놨다면 “Use existing SDKs"에 폴더 위치를 지정해주고 “Next”를 눌러 주면 됩니다. 일단 이 글을 보시는 분들은 대부분 처음일 테니 그냥 위와 같이 폴더를 정해주세요. 참고로 안드로이드 최신 버전이 아닌 이전 버전( Android 2.1)을 설치.. 2012. 4. 5.
2012 안드로이드 개발 프로그램 설치방법 - 3 ADT 설치 출처 : http://blog.naver.com/theparanbi?Redirect=Log&logNo=801533125063. 안드로이드 개발 도구 (ADT) 설치 안드로이드 개발 도구 즉 ADT는 이클립스 안에서 작동 되는 것입니다. 모든 설치 과정이 이클립스 안에서 이뤄집니다. 설치를 위해 앞 단계에서 설치한 이클립스를 켜주세요. 이클립스를 실행시키면 화면 3.1 과 같이 나옵니다. ( 화면 3.1 : 이클립스 초기화면 ) 이어 화면 3.2가 같이 뜹니다. 작업 폴더를 설정하라는 것입니다. 앞으로 안드로이드 프로그래밍 작업을 할 폴더를 빨간 상자 안에 지정해주면 됩니다. 저는 c:\android\workspace로 적었습니다. 미리 폴더를 만들어 놓지 않아도 이곳에 적은 그대로 폴더가 생깁니다. 기존.. 2012. 4. 5.
2012 안드로이드 개발 프로그램 설치방법 - 2 이클립스 설치 출처 :http://blog.naver.com/theparanbi?Redirect=Log&logNo=80153312506 2. 이클립스 설치 두 번째 단계로 자바 개발 IDE 도구 이클립스를 설치하겠습니다. 우선 http://www.eclipse.org/ 로 들어가세요. 메인 화면이 보이면 위에 있는 Downloads 또는 오른쪽에 Download Eclipse 중 아무거나 둘 중 하나 누르세요. ( 화면 2.1 : 이클립스 사이트 화면 ) 화면 2.2 가 뜨면 목록에 나오는 여러 개 중에 안드로이드 개발에 필요한 Eclipse IDE for Java Developers 를 고릅니다. 기본적으로 Windows가 화면에 나오는데 혹 다른 운영체제를 쓰신다면, 오른쪽 위에 있는 Windows라 써 있는 곳을.. 2012. 4. 5.
2012 안드로이드 개발 프로그램 설치방법 - 1 Java SDK 설치 출처 : http://blog.naver.com/theparanbi?Redirect=Log&logNo=80153312506 많 은 분들이 전에 올렸던 안드로이드 개발환경 프로그램 설치 방법을 봐주셨습니다. 그런데 요즘 설치 과정에서 변화가 생겨 전에 올린 포스팅 설정 방법과는 맞지 않는 것이 있더군요. 그래서 그런지 질문하시는 분도 많고 설치를 제대로 못하시는 분도 계신 것 같습니다. 그래서 다시 시간을 내, 테스트해서 이글을 올리게 되었습니다. 이 번 포스팅은 지난번과 구성은 같으나 내용에 그동안 질문을 받았던 부분과 자주 틀리셨던 부분도 같이 보강하고 새로운 방법에 맞게 수정을 했습니다. 그러므로 안드로이드 개발에 입문하시는 분이나 새롭게 설치하는 분은 이전 글보다는 지금 올리는 2012년 글을 참고.. 2012. 4. 5.
Xcode4에서 범용으로 쓸 수 있는 library만들기. 개발하다보면 Common Module 혹은 Common Library 등.. 이런 뉘앙스의 이름으로 불리는 녀석들이 있다. 개발하는데 공통적으로 쓰이는 것들을 모아놓은 녀석들을 지칭하는 말인데, cocoa에서는 이렇게 안부르고 static library라고 부른다. iPhone, iPad의 경우 시뮬레이터가 있다보니 시뮬레이터(simulator)용, 디바이스(device)용 이렇개 2가지를 만들어서 상황에 맞게 사용을 해야 하는데, 이게 참 번거로운 일이다. 생각해보라. 시뮬레이터로 테스트 할땐 시뮬레이터용 라이브러리를 넣고 디바이스에서 테스트 할땐 시뮬레이터용 라이브러리를 삭제하고, 디바이스용 라이브러리를 넣고 다시 시뮬레이터로 테스트 할땐 디바이스용 라이브러리를 지우고, 시뮬레이터용 라이브러리 넣고... 2012. 3. 29.
SVN X remains in tree-conflict 간혹 Eclipse에서 새로운 리소스 폴더를 추가하거나 패키지를 추가하고 Commit 또는 Update를 수행하면 아래와 같은 메시지가 뜨며 실패하는 상황이 발생한다. "SVN X remains in tree-conflict" 이럴때는 아래와 같이 수행하면 해결된다. 1. 충돌이 발생한 디렉토리를 프로젝트 외부로 이동 2. 이동된 디렉토리에서 숨겨져 있는 .svn 폴더를 삭제 3. 이후 해당 프로젝트에서 svn cleanup 메뉴 수행 4. 다시 해당 프로젝트에서 svn update 메뉴 수행 5. 외부로 이동시킨 디렉토리를 다시 프로젝트로 복귀 6. 이후 해당 프로젝트에서 svn commit 메뉴 수행 2012. 3. 22.
iPhone용 Open Source 모음 http://www.cocoacontrols.com/platforms/ios/controls/mnmbottompulltorefresh https://github.com/enormego/EGOTableViewPullRefresh http://michael.stapelberg.de/cCSVParse http://www.cocoacontrols.com/platforms/ios/controls/balabel http://www.cocoacontrols.com/platforms/ios/controls/fxlabel http://www.cocoacontrols.com/platforms/ios/controls/coolbuttons http://www.coco.. 2012. 3. 22.