아이폰5 컴파일시 라이브러리 빌드 오류 개발된앱을 아이폰5로 기기에 빌드시 다음과 같은 오류가 발생libKISACrypto.a 라이브러리가 armv7s 아키텍쳐를 지원하지 못해서 생기는 문제 file is universal (2 slices) but does not contain a(n) armv7s slice: /xxx/xxx/libKISACrypto.a for architecture armv7s clang: error: linker command failed with exit code 1 (use -v to see invocation) 실제로 그런지 확인 한번 해보겠습니다.터미널 실행후 라이브러리 파일이 있는 곳까지 cd 로 이동아래 명령어를 실행합니다. file libKISACrypto.a 아래 터..
textview 키패드 backspace 버튼 및 다음문장(return) 버튼 이벤트 알아내기 제목이 조금 어렵나요UITextView를 터치하고 올라오는 키패드에서 backspace 버튼과 다음문장(영어로 return) 버튼 이벤트값을 알아내는 방법 입니다. 네 아래 소스를 보면 됩니다. - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {//backspace버튼 클릭시 if (range.length == 1 && [text length] == 0) {//이벤트처리 } //다음문장 버튼 클릭시 else if ([text hasSuffix:@"\n"]){//..
static library 합치기 오늘은 어제 배운 두개의 static library를 하나로 합치는 방법 입니다.라이브러리를 하나로 합치는 경우는 이렇습니다.일반적으로 lib.a 파일과 header 파일을 sdk로 만들어서 배포하는 경우가 많은데이중 lib.a 파일은 시뮬레이터용과 디바이스용 두가지로 배포를 많이 합니다. 이런경우 두개의 파일을 하나의 라이브러리로 만들어서 쓰는 방법입니다. 먼저 터미널을 여시고 다음을 입력합니다.입력하기 전에 해당 라이브러리 파일이 있는 디렉토리로 이동을 해야겠죠cd /dir 또는 cd dir 명령어를 써서 해당 디렉토리로 이동합니다. libtool -static libGIOPMap.a libGIOPMapSim.a -o libGIOP.a 디바이스용 : libGIOPMa..
navigationbar background image navigationbar background image 넣는 방법입니다. custom class를 만들어서 넣는 방법도 있지만 직접 코드로 작성해서 넣는 방법입니다.두가지 방법이 있는데 간단한 코드로 넣는 방법 (네비게이션바에 left, right 버튼이 있을때 가려지지 않는다) [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigation_ucloudpersonal.png"] forBarMetrics:UIBarMetricsDefault]; 이미지를 생성해서 프레임 조절하고 addSubview 해서 넣는 방법 (네비게이션바에 left, right ..
tableview cell background image 테이블뷰 셀에 백그라운드 이미지 넣는 방법입니다. 블로그 하면서 자주 쓰게 되는 코드나 공유하고 싶은 코드를 짬내면서 쓰고 있는데 역시 tableview에 관한 게 가장 많은 것 같다. 테이블뷰는 거의 customcell을 자주 사용해서 셀배경 이미지 넣는 부분은 xib에 imageview 넣어서 바로 적용시키는데 이번에는 customcell 없이 테이블뷰에 적용시켜 보았다. 구글 검색을 하니 여러가지 방법이 많이 나왔다. 그런데 약간의 문제가 있는 방법들이 여러 있었지만 최종적으로 문제없이 적용이 된 소스를 공개한다. cell.backgroundView = [ [[UIImageView alloc] initWithImage:[ [UIImage im..
tableview 최상단으로 이동 [mTable setContentOffset:CGPointMake(0, 0) animated:NO]; 테이블뷰 갱신이나 reload 시 자주 써먹게 되는 방법 update테이블뷰 최하단으로 이동 [filedata count]은 row의 전체갯수이며 row의 마지막값은 전체갯수보다 항상 -1 작으므로 [filedata count] - 1 NSIndexPath *indexPath = [NSIndexPath indexPathForRow:[filedata count] - 1 inSection:0]; [mTable scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:YE..
테이블뷰 다음 페이지 불러오기 테이블뷰 메소드에 이런 게 있었다니 ...방금 급 발견하고 더보기 기능 구현 이전에는 위 이미지처럼 테이블뷰 마지막 셀을 하나 추가해서 버튼을 클릭했을 때 다음 페이지를 불러오도록 구현했는데,, 어떤 어플에 마지막 셀이 보여질 때 자동으로 다음데이터를 불러오는 기능을 본후 언젠가는 해봐야 겠다고 생각 하던중! 구글링으로 아래 메소드를 찾음.. willDisplayCell *코드 설명- 파싱데이터 셀에 뿌려주는 형식이며 20개씩 불러오고 총 데이터가 20개 이상일 numberOfRowsInSection 카운트 +1 해준다. More 버튼을 넣기 위해서.. - 만약 More 버튼 없이 구현하기 위해서는 아래 데이터의 [getData count]를 [getData count] -..
주소록 데이터 접근 (email) /* //email 정보 ABMutableMultiValueRef eMail = ABRecordCopyValue(ref, kABPersonEmailProperty); CFIndex count = ABMultiValueGetCount(eMail); if (count == 1) { CFStringRef value = ABMultiValueCopyValueAtIndex(eMail, 0); NSString *emailid = (NSString*) value; [mudicString setObject:emailid forKey:@"HomeMail"]; CFRelease(value); } else { for (CFIndex i = 0; i < count; i++) { CFStrin..
다른 클래스 메소드 호출 sample.h#import @interface Sample : NSObject { }- (void) Test;@end sample.m #import "Sample.h" @implementation Sample - (void) Test { //메소드 구현}@end 호출하고자 하는 클래스 헤더파일에 "Sample.h" 를 임포트 한후 인스턴스를 선언한다.Sample *sample; 호출 메소드에서 다음과 같이 호출한다. sample = [[Sample alloc] init]; [sample Test];
iOS object-c 문자열 처리 NSString* str1 = @”Objective-C 2.0 Programming. “; NSString* str2 = @”xCode is Powerful. “; NSString* str3; NSString* strNum = @”7.7″; NSString* tmp; NSMutableString* mutableString;NSComparisonResult compareResult; NSRange range; // 빈 문자열 생성 str3 = [NSString string]; // 문자열로 새로운 문자열 생성 str3 = [NSString stringWithString:@"stringWithString"]; NSLog(@”%@”, str3);str3 = [[NSStrin..
이미지뷰, 일반뷰 사각 테두리 만들기 작년에 제작한 골프강좌 앱입니다.위에 골프장 이미지뷰를 사각 테두리로 지정하는 방법입니다. 1. 헤더파일에 #import 2. 적용부분에 아래 코드를 입력 IBOutlet UIImageView *image;image.layer.masksToBounds = YES; image.layer.cornerRadius = 10.0; image.layer.borderWidth = 2.0;image.layer.borderColor = [[UIColor grayColor] CGColor]; 코너 라디언 적용테두리 굵기테두리 색을 지정해 줄 수 있습니다.
인증서 관련된 오류 어제 있었던 일입니다.맥북에 프로젝트를 담아서 기기테스트를 하러 갔습니다.담당자들 아이폰에 프로젝트를 빌드하는 순간 인증서 오류가 나더군요키체인을 보니인증서가 유효하지 않음이라고 뜨더군요. 키체인이 만료되지는 않았습니다. 결국 테스트는 못하고 짜증이 밀려오는 상태로 카페에 들어가 맥북을 재시작했습니다.재시작을 하니 날짜와 시간 설정을 다시 하라는 팝업창이 뜨더군요맥북에 설정된 날짜 시간을 보니 2001년 1월 1일 시간도 2시간 정도 늦게 되어있더라고요설마 이것 때문에???하고 설정을 당일 날짜로 변경하고 키체인을 보니인증서가 유효함 멘붕 ㅠ ㅠ 머 이런 경우도 처음이네요 혹시 이와같은 인증서 오류가 나면 날짜 시간 설정을 확인해 보세요.아마 윈도우를 겸해서 쓰시는 분이 간혹 겪을 수..
뷰 호출 관련 메소드 // 메모리 상에 처음 로드되었을 때- (void) viewDidLoad; // 화면에 나타나기 직전- (void) viewWillAppear:(BOOL)animated; // 화면에 나타난 이후- (void) viewDidAppear:(BOOL)animated; // 화면에서 사라지기 직전- (void) viewWillDisappear:(BOOL)animated; // 화면에서 사라지고 나서- (void) viewDidDisappear:(BOOL)animated; // 메모리 상에서 삭제되기 전 iOS5 이상- (void) viewWillUnload; // 메모리 상에서 삭제될 때- (void) viewDidUnload;[출처] [Xcode 4.3] 2.2. 뷰 컨트롤러|작성자 바..
UDID 대체 방법 -> MAC 어드레스 얻기 올해 3월이었죠. 애플이 개인정보 유출을 막고자 UDID를 쓰는 앱에 대해 단계적으로 심사하겠다고 했습니다. 지금은 IOS 5.0 이상에서는 UDID를 추출하는 NSString *udid = [[UIDevice currentDevice] uniqueIdentifier]; 메소드를 쓰면 안된다고 하네요. 그래서 나온 대안 중, MAC 어드레스 값을 추출하는 방법입니다. 일종의 PC의 랜카드 고유번호(?)라고 하는데 아이폰에서는 네트워크 접속 이더넷카드 시리얼 넘버라고 보시면 되요. 구글에서 떠도는 소스는 3G와 WI-FI 환경에서 값이 다르게 추출된다고 하네요. 형식은 FF:FF:FF:FF:FF:FF 이런식으로 나와요 그 문제를 해결한 소스입니다. 저도 어디서..
일반 디스플레이, 레티나 디스플레이 구별하기 해상도 관련 이슈는 오래전에 발생했는데 이미지 문제가 컷죠. 3g와 4 이상의 기기에서 디자인 해상도를 모두 맞춰야 하는문제는 이미지 파일명에 @2x(레티나) 를 붙여서 모두 충족 시킬 수 있죠. 디자인이 아닌 기기를 식별하기 위해서는 기기의 해상도를 잡아내야 합니다. [[UIScreen mainScreen] scale]; NSLog(@" %f ", [[UIScreen mainScreen] scale]); 스케일을 따져보면 알 수 있습니다. 일반 디스플레이 1.0 레티나 디스플레이 2.0
iOS5 Automatic reference counting iOS5 부터 automatic reference counting (ARC) 를 지원하고 있는데요. retain, release, dealloc 를 쓸 수 없죠. 알아서 해주거든요. 좋은데, 가끔 iOS5 이전 버젼에서 개발한 프로젝트를 iOS5로 실행하거나 다른 소스를 쓸 때 retain, release, dealloc 때문에 고생하는 경우가 있습니다. 일일이 찾아서 지운적이 있는데, 이럴때 사용하는 방법입니다. 프로젝트 Build Settings에 가서 검색키워드로 auto를 치면 그림과 같이 검색이 됩니다.automatic reference counting이 보이시나요. YES로 바꿔줍니다. 그럼 retain, release, deallo..
커스텀 액션쉬트입니다. 액션쉬트에 이미지를 넣어보아요. UIActionSheet* actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"취소" destructiveButtonTitle:nil otherButtonTitles:@"메일 보내기", @"카카오톡 보내기", @"Twitter", @"Facebook", nil]; actionSheet.actionSheetStyle = UIActionSheetStyleBlackTranslucent; //이미지 [[[actionSheet valueForKey:@"_buttons"] objectAtIndex:0] setImage:[UIImage imageNamed:..