본문 바로가기

전체 글1040

페이지 넘김효과 우선 제 블로그에 정리했던 글이라 존칭 생략된 점 양해 부탁드리구요. 사실 페이지 넘기는 효과라기보다는 뷰와 뷰를 구성하고 있는 레이어에서의 애니메이션 효과에 관련된 내용이네요. 어렵지 않은 내용이라 올리기가 좀 뻘쭘하지만 일단 참고하실 분 있으시면 참고하세요...^^;;; 원문링크 : http://www.prapps.net/514 ========================================================================================= import해야 할 Framework : * layer와 CATransaction 사용을 위해 QuartzCore Framework를 import 해야 함. *CATransaction은 다중의 layer 계층에서 발생.. 2011. 11. 29.
기존 앱을 iOS5용으로 업댓할 때 주의사항 안녕하세요. 곧 iOS5가 나오겠네요. iOS5로 기존 앱들이 다 잘 돌아가면 좋겠지만, 안되는 것들도 몇몇 눈에 띄네요. 개발자 여러분들의 앱도 미리 테스트하셔서 뭔가 이상한 것이 있으면 빨랑 iOS5용으로 업댓하셔야 할 듯 싶네요. xcode에서 업댓할 때, 빌드까지는 잘 되었는데, 오그나이저에서 최종 업로드할 때 armv6가 없어서 업로드가 안된다는 메세지가 나오는데, 이를 해결하기 위해 다음과 같이 "armv6"을 추가해 주세요. Build Setting -> Architectures 에서 Distribution 쪽에 Standard(armv7)으로 설정이 되어 있습니다. 1. 마우스를 Distribution쪽에 갔다대면 + 가 보이는데, 이를 클릭하면 Any SDK 라인이 하나 추가됩니다. 이 .. 2011. 11. 29.
Xcode4에서 콘솔 창을 분리해서 열어보자! Xcode3을 얼마전까지 사용하다가 iOS5업데이트와 함께 4로 넘어왔네요. 사용하다 보니, 다른건 다 좋은데, 디버거 콘솔 창을 따로 보기가 어렵더군요. 맥북에 모니터 조합이라서, 메인 코딩은 모니터에서, 디버그 콘솔은 맥북에 띄워놓고 사용했었거든요. 이래저래 구글링 해보니 마침 콘솔을 별도의 창에 표시 할 수 있는 방법이 있어서 공유해봅니다. 일단은 1. Xcode4에서 TabBar를 볼수 있어야 합니다.(View - Show Tab Bar)를 선택하세요. 2. 탭바의 비어있는 자리를 2번 클릭하거나, 오른쪽 끝의 +버튼을 눌러서 새 탭을 만듭니다. 3. 새 탭의 이름을 더블클릭해서 이름을 주세요. (Console 이라던가 말이죠) 4. 새로만든 콘솔 탭에서 디버그 콘솔을 찾아 오른쪽 밑의 버튼 3개.. 2011. 11. 29.
iOS5에서 gloss effect 설정입니다. 안녕하세요? 회원님들. iOS5 시뮬레이터와 iOS5 OEM에서 gloss Effect 설정법입니다. 아래 빨간 네모칸 처럼 해주셔야 iOS5에서 gloss Effect를 없애주실 수 있습니다. 도움이 되시면 참 기쁠거 같네요. ^^ 2011. 11. 29.
XCode 4.2에서 특정 소스만 ARC적용 안하기 프로젝트 생성할 때 Automatic Record Count (ARC) 기능 옵션을 활성화 하면 retain, release 를 별도로 신경쓰지 않아도 좋기는 하네요. 그런데 ARC 를 사용해서 프로젝트를 생성한 후 예전에 라이브러리 성으로 만들어 두었던 소스를 참조할 경우 ARC 오류가 발생하더군요. 양이 많지 않으면 ARC 에 맞게 수정해주면 되겠지만... 그런데 찾다 보니까 해당 소스만 ARC 룰이 적용안되게 해주는 flag 가 있었습니다. Targets -> Build Phases -> Compiler Sources 에 가서 ARC를 적용하고 싶지 않은 소스의 Compiler Flags에 아래 flag를 추가해주면 됩니다. -fno-objc-arc 그럼 Ok... ^^; 2011. 11. 29.
Xcode4.2 에서 OpenCV 사용하기 Xcode4.2 에서 OpenCV 2.3 version 포팅된 템플릿 프로젝트 링크 입니당. http://computer-vision-talks.com/2011/08/a-complete-ios-opencv-sample-project/ https://github.com/BloodAxe/opencv-ios-template-project 이번에 추가된 CoreImage.framwork에는 얼굴인식도 지원하네요.. 얼굴인식 기본제공 API 입니다. left,right - eye & mouse 찾아주네요. http://developer.apple.com/library/ios/#documentation/CoreImage/Reference/CIFaceFeature/Reference/Reference.html 혹시나 .. 2011. 11. 29.
Twitter & Facebook 로그아웃 정리 안녕하세요^^ 오랫만에 맥부기에 글을 올리네요! 이번에 어플리케이션 업데이트를 하면서 SNS연동을 처리하게 되었습니다. 단순 연동에 관해서는 글들이 많이 있어서 처리하기 쉬웠습니다! 그런데!! 트위터나 페이스북의경우 한번 로그인하면 앱을 종료하기까지는 그 아이디만 사용할 수 있더라구여... 관련자료를 계속 검색하다가 결국 구현해서 맥부기에 자료삼아 남겨볼까합니다^^(너무 받기만해서..) //많은 분들이 아시고 있을 듯하지만 자세한 내용은 있지 않아서 글을 남기네요!! 일단 페이스북 관련입니다! 페이스북은 트위터보다 로그아웃에 관련된 정보가 많아서 쉽게 찾을 수 있었는데요! 일단 페이스북의 기본예제인 Hackbook을 확인하시면 쉽게 구현 가능하실 거에요! 아래의 메서드는 로그인 처리시 불려지고 실행이되게.. 2011. 11. 29.
알아봅시다 ARC(Auto Reference Counting) 안 녕하세요. 오랜만에 다시 뵙습니다. 그동안 프로젝트진행하고 나서 몇일 짬이 나는군요. 그래서 오늘은 핑계삼아 글을 작성해봅니다. ^^. 그런데 xcode 4.2부터 지원이 되는 ARC에 대해서 알아보시는 분들이 많더군요. 그래서 준비했습니다. 간단한 ARC 사용하기!!! 올 해 WWDC2011에서(전 가보지도 못했습니다. 개발자 비디오만 봤음. ㅠ,ㅠ; 저도 가고 싶어요!!!) ARC를 처음으로 소개하였는데요. 아직 도입 초창기 이다보니 약간의 혼란이 가중되지 않았나 싶어서, ARC에 대한 글을 올리게 되었네요. 사실 패턴관련 글들을 좀더 다듬어서 올리고 싶었는데;;; ARC가 좀더 여러분들에게 광범위하게 사용될거 같아 먼저 글을 올립니다. ^^. 먼저 이글은 Xcode 도큐먼트의 Transition.. 2011. 11. 29.
xCode4.2와 그 이전버전에서 iOS버전 분기처리 팁일지는 모르겠지만 xCode4.2와 그 이하버전의 xCode에서 모두 쓰임이 가능한 버전 별 분기입니다. iOS 5.0 이상에서만 쓰이는 코드를 분기타기 위해서는 아래와 같이 __IPHONE_5_0 이상에서 쓰이도록 해야합니다. #if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_5_0 #endif 물론 이렇게 하면 xCode4.2에서는 제대로 돌아가지만 그 이하의 xCode에서는 __IPHONE_5_0을 찾지 못해서 BAD_ACCESS가 나곤 합니다. 그래서 아래와 같이 4.3보다 크게 해야지만 정상적으로 됩니다. #if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_4_3 #endif 이제 잘 되겠지 하고 4.3 simulator에서 돌.. 2011. 11. 29.
iOS 5.0 이하 (4.x) 에서 viewWillAppear , viewWillDisappear 동작이 안될때.. 일단 제 앱의 구조가 탭배컨트롤러 안에 뷰컨트롤러들이 있고 각 뷰컨트롤러들안에 네비컨트롤러가 들어가고 그 네비 컨트롤러 안에 또 뷰컨트롤러들이 왔다갔다 하는 복잡 미묘한 앱입니다 -_-; iOS5 용으로만 만들다가 문제가 없었는데 iOS 4 도 지원을 해보자 해서 컨버젼중인데요.. iOS5에서는 문제없는 각 뷰컨트롤러들의 viewWillAppear viewWillDisappear (did 들도 마찬가지) 들이 iOS4 에서는 호출이 되지 않네요. 좀 검색해보니 iOS5 에 들어서야 개념대로 작동을 하는것 같고.. 이전에서는 크게 네비컨트롤러 안의 뷰컨트롤러들의 메소드가 호출이 안되고 있었던것 같습니다. 그래서 버전체크를 해서 iOS5 이전에서는 네비컨트롤러에서 나오는 뷰컨트롤러들의 메소드를 강제호출하게 .. 2011. 11. 29.
webview web 에서 app 으로 데이타 전달하기 간단히 정리하면 웹에서 페이지 이동 요청이 오면 shouldStartLoadWithRequest 가 먼저 호출되는데 특정 규칙의 값이 넘어오면 페이지는 이동하지 않고 앱에서 값을 받아 다른 작동을 하는 것입니다. 웹 로그인 뷰로 이동 앱 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{ NSString *url = [[request URL] absoluteString]; NSArray *urlArray = [url componentsSeparatedByString:@"?"]; NSString *cmd.. 2011. 11. 29.
ASIHttpRequest를 ARC와 함께 쓰기 (XCode 4.2) 출처 : http://cafe.naver.com/mcbugi/175378 ASIHttpRequest라는 좋은 라이브러리를 ARC를 지원하지 않더군요. ARC와 함께 이 라이브러리를 사용할 수 있는 방법을 알게 되어 정리차원에서 작성합니다. 새 Target을 만들고, 형식은 Cocoa Touch Static Library로 설정합니다. 이름은 적당히 ASIHttpRequest로 정해 줍시다. Build Setting에서 로 검색하면 Automatic Reference Count 옵션이 보이는데 이것을 NO로 변경해 줍니다. 프로젝트 폴더에 가면, 아까 생성한 Target 이름 (여기서는 ASIHttpRequest) 의 폴더가 있는데, 이 폴더에 ASIHttpRequest 의 Classes 폴더 내의 모든 .. 2011. 11. 29.
OpenCV on iOS (iOS에서 OpenCV 빌드 및 설정하기) (1) Mac에 OpenCV를 빌드하고 설정하는 방법입니다. 1. 먼저 OpenCV source를 받습니다. (저는 svn을 이용해서 받았지만, Macport나, Homebrew를 이용하셔서 받으셔도 됩니다) 터미널을 실행시키시고, 다음 명령어를 실행시킵니다. svn co https://code.ros.org/svn/opencv/trunk 저 명령어대로라면, 컴퓨터에 trunk 폴더가 생성이 되실 겁니다. 이 폴더를 OpenCV 파일을 두고 싶은 곳에 위치시키세요. 저는, 도큐멘트\opencv 폴더에 넣어두었습니다. 2. OpenCV Buildscript를 받습니다. https://github.com/BloodAxe/OpenCV-iOS-build-script/ 이곳에서 파일 받으시고, BuildOpenCV.sh.. 2011. 11. 29.
어플에서 어플 실행시키기(앱에서 앱 실행 시키기) AppA 어플에서 AppB 어플을 실행시키기를 해보겠습니다. OpenURL URL Schemes, URL Schemes, handleOpenURL 이용방법 또는 Header, 헤더 라고 말하는 것을 간단히 말하면 AppB:// 와 같은 형태로 호출시 쓰이는 형태로, 홈페이지에서 http://와 같이 사용되는 형태의 머릿글 이라고 생각하면 좋습니다. 위에서 AppB는 어플 인증 App ID가 com.test. AppB일 경우에 AppB를 말합니다. 호출 받는 쪽, 즉, AppB 에서 해줘야 하는 부분을 살펴보겠습니다. 선언은 projectname-info.plist 파일에 항목을 추가해야 합니다. 1) info.plist에 URL Schemes 추가 2) 소스 어플프로그램AppDelegate.m에 hand.. 2011. 11. 25.
OpenURL URL Schemes, HTML에서 어플실행, 어플에서 어플실행, handleOpenURL 이용 (1) 참고 url 1. http://iphonedevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html 2. http://docs.burstly.com/guides/in-app-purchase-quick-start-guide.html#giving-your-app-an-openurl-url-scheme 3. http://wiki.akosma.com/IPhone_URL_Schemes (2) 설명 OpenURL URL Schemes, URL Schemes, handleOpenURL 이용방법 또는 Header, 헤더 라고 말하는 것을 간단히 말하면 test1234:// 와 같은 형태로 호출시 쓰이는 형태로, 홈페이지에.. 2011. 11. 25.
XCODE, 네비게이션바의 Function 목록에 함께 나오는 주석문 작성하기 #pragma mark 코멘트를 어쩌고 저쩌고로 적습니다 #pragma mark - 보통 위에걸 많이 쓰고 아래 것들도 준비되어 있다. 협업에 필요하고, 소스 가독성에 중요한 것들이다. //???: 질문 //!!!: 중요한고 //MARK: 마크할 것들 //TODO: 해야될 것들 //FIXME: 고쳐야 될 것들 출처 : http://www.devlab.pe.kr/86 2011. 11. 8.
컨텐츠의 사이즈에 맞추어 UILabel 크기 변경하기 기존의 글에서 UILabel을 이용하여 컨텐츠를 보여주는 다양한 방법에 대해 이야기 하였습니다. - 두줄 이상을 표시하기 - 문자열 크기에 맞추어 UILabel frame 크기 변경하기 하지만 위의 링크에서 두번째 글의 경우에는 특정한 상황에서 매우 비정상적인 결과를 보여줍니다. 방법을 찾다 보니 sizeWithFont 메서드가 문제가 있는 메서드이더군요. 다음의 방법을 사용하는것이 가장 확실한 방법인듯 합니다. - (void)applicationDidFinishLaunching:(UIApplication *)application { NSString *string = @"I have a very beautiful girl-friend. but she is not love me after last week.. 2011. 11. 2.
UIWebView 내의 컨텐츠 이벤트 가로채기 UIWebView 클래스를 이용하다보면, 가끔 로딩한 웹뷰 컨텐츠 내에서 어떤 이벤트가 일어나는지 가로채고 싶을 때가 있습니다. 예 를 들면, Resource 폴더 내에 내가 원하는 .html 파일을 넣고, 그 폴더에서 Get 방식으로 파라미터를 특정 서버에 전달하는 경우에 정작 사용자가 만든 프로그램 내에서는 이 이벤트가 어떻게 서버로 흘러 들어가는지를 포착하기가 어려운 것이 현실입니다. UIWebView는 로딩만 할뿐, 안에 로딩된 컨텐츠가 어떻게 전달되는지는 미궁이겟죠.. 그러나 역시나 이러한 이벤트에 대한 사용 가능한 함수가 있었네요. 이용법은 다음과 같습니다. @interface WebBrowserTutorialAppDelegate : NSObject { 일단 델리게이트 부분에 웹뷰 델리게이트를.. 2011. 10. 27.
싱글톤에 관련한 간단한 팁 싱글톤패턴 공부하면서알게됐는데 + (id) sharedInstance { static Singleton * instance; @synchronized(self) { if (instance==nil) { instance = [[self alloc] init]; } } return instance; } + (id) sharedInstance { static Singleton * instance; if (instance==nil) { @synchronized(self) { if (instance==nil) { instance = [[self alloc] init]; } } } return instance; } @synchronized 를 쓰는 이유가 멀티스레드에서 안정성을 보장받기위해서 쓰는데요 if(inst.. 2011. 10. 25.
프로젝트에 프로젝트 삽입 간혹 프로젝트를 진행하다가 외부 라이브러리를 사용할 경우가 생긴다. 많은 경우 이미 라이브러리 형태로 컴파일 된 .a 파일이나 .dylib 파일을 가져다 사용하면 간편하고 좋기는 하지만 때때로 이러한 라이브러리들을 제공하지 않거나 (물론 직접 컴파일 하면 되지만...) 혹은 소스를 좀 건드릴 필요가 있을 때는 라이브러리를 포함시키기보다는 소스를 직접 포함시키거나 아니면 프로젝트를 통째로 진행중인 프로젝트에 포함시켜버린다. 그런데 오늘 아무리 해도 프로젝트의 빈 껍데기만 들어갈 뿐 실제 프로젝트가 현재 프로젝트에 삽입되지 않는 현상을 발견하였다. 뭐 고수들이야 이미 잘 알고 있는 문제이겠지만 난 이 것을 해결하느라 2시간여를 꼬박 보냈다...ㅠ.ㅠ 문제는 이렇게 한 프로젝트가 다른 프로젝트 내에 삽입 되기.. 2011. 10. 25.
OTA로 AdHoc 배포하기 기존에는 애드혹(AdHoc)으로 앱을 배포하기 위해서는 빌드한 바이너리를 메일 또는 다른 방법으로 클라이언트 또는 최종 테스터에게 전달하여 iTunes를 이용하여 아이폰과 동기화하는 방법을 사용했었다. 그런데 아무리 방법을 알려 줘도 앱 설치가 잘 안된다거나 혹은, 나는 못하겠다(안된다), 등의 이유로 로컬에서 직접 설치하는 방법을 주로 이용했었다. 그게 생각보다 꽤 귀찮다. Xcode를 이용하여 소스에서 바로 빌드하는 경우에는 그나마 용이하지만 이런저런 이유로 애드혹 바이너리를 대신 동기화 해준다는 것이 한 두 대일 경우에는 몰라도 10여대가 넘어가면 여간 성가신 일이 아닐 수 없다. 나만 이제야 알게 되었는지는 모르겠으나 OTA(Over the Air)를 이용하여 애드혹 앱을 배포하는 방법을 설명한다.. 2011. 10. 21.
UiimageView에 이미지를 적용시 이미지 공백으로 나타날 경우 UIimageView에 이미지를 동적으로 적용할 경우 간혹 이미지가 표시되지 않는 경우가 생긴다. 나의 경우에는 ViewDidLoad에서 바로 적용했을 경우 나타나지 않아서 혹시나 하는 생각에 Delay를 0.5초가량 주니까 이미지가 표시됐다. 아마도, 너무 빨리 로드가 되서 그런것 같다. 혹시 모르니 체크해 보자. 2011. 10. 11.
아이폰에서의 문자열 지역화(Localization) 아이폰에서의 문자열 지역화(Localization) 문지열의 지역화를 위해서는 Localizable.strings 파일을 생성하여 "키값" = "실데이터"; 로 지역화를 해주면 됩니다. 실제 코드에서는 스트링 값대신 NSLocalizedString(@”키값”, @”설명”) 형태로 사용하시면 됩니다. 1. view-based Application 프로젝트를 생성 2. Resource 디렉토리에 Localizable.strings 파일을 생성 3. Localizable.strings 파일을 선택하고 Info에서 Make File Localizable>Add 4. Localizable.strings 아래의 English 파일에 입력 "Language" = "English"; "Greeting" = "Hello.. 2011. 10. 11.
NSXMLParser로 XML 데이터 얻어오기 참고 사이트 아이폰 개발센터 의 Introduction to Event-Driven XML Programming Guide for Cocoa 와 블로그 http://cocoadev.tistory.com/245 를 참고 하였습니다. 1. 접속 NSURL *url = [[NSURL alloc] initWithString:@"http://sites.google.com/site/iphonesdktutorials/xml/Books.xml"]; NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url]; 대상 XML (NSString 타입)의 주소를 인자로 NSURL 을 생성한다. NSXMLParser 오브젝트를 수신된 url을 인자로 초기화 .. 2011. 10. 11.