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:..
앱에서 다른 앱을 호출시키는 방법입니다. 카카오링크 플랫폼과 비슷한 형식입니다. 뉴스앱 같은 경우 기사를 카카오톡 친구에게 기사제목과 함께 링크는 보내는 방법을 쓰고 있는데요. 카카오톡이 설치된 경우 바로 카카오톡 친구목록 페이지를 보여주고 기사를 전송하는 방법입니다. 카카오톡이 설치되지 않은 경우 앱스토어 다운로드 페이지로 이동하게 되어있죠. 앱 호출 방법 1. 호출을 당할앱 info.plist 파일을 열어서 URL Types를 추가하고 URL identifier에 값을 유일한 값을 입력합니다. 그리고 item0에 URL Schemes를 추가하여 url scheme에 연결될 스키마 이름을 넣습니다. 2. 호출하는 앱 SString *appUrl = @"kwongolf://"; //url scheme 값..
뷰 애니메이션 함수입니다. 팝업형식으로 뒤에서 앞으로 튀어나오는 형식이죠. IBOutlet UIView *cateView1; cateView1.frame = CGRectMake(0, 0, 0, 0); cateView1.transform = CGAffineTransformMakeScale(0.1, 0.1); [cateView1 setAlpha:0.0]; CGContextRef context = UIGraphicsGetCurrentContext(); [UIView beginAnimations:nil context:context]; [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; [UIView setAnimationDuration:0.5]; [cateVi..
디바이스 테스트 도중 실행전에 다음과 같은 오류메세지가 뜨는 경우가 있다. Couldn't register com.yourcompany with the bootstrap server. Error: unknown error code. This generally means that another instance of this process was already running or is hung in the debugger. Program received signal: “SIGABRT”. 이럴 땐 아이폰을 재부팅 시키면 된다. 쉽다. 답은 디바이스 재부팅 Device Reboot
textview에 입력된 글 줄바꿈을 해봅시다.■ 코드로 작성 cell.lbltxt.text = @"① 다운 스윙을 잘할려면 먼저 타이밍을 잘 잡는것.\n\n② 스윙 톱의 모양을 그대로 끌고 내려 오는것.\n\n③ 허리 높이까지 와서는 오른팔굼치를 풀어 주게 되며 이때 손목 코킹도 서서히 풀어 주는것.\n\n④ 다운 스윙에서 머리가 따라 가서는 안되며 너무 서두르지 않는게 최대의 방법이다.\n \n 요걸로 하면 됩니다. ■ interface에서 직접 쓸 때 option + return(enter) 인터페이스 빌더에서 직접 입력할 때 단축키를 누르면 줄바꿈이 됩니다. 허나 실제로 글을 쓰고 엔터를 치면 줄바꿈이 안되더라고요. 저는 그냥 스페이스바 계속 눌러서 강제로 줄바꿈 합니다;;
테이블뷰 사용시 cell을 동적으로 추가하거나 삭제해야 하는 경우가 발생한다. 이럴 때 사용하는 소스코드 예를들어 cuscell *cus; //CustomCell UITableView *table; NSMutableArray *data; data = [NSMutableArray arrayWithObjects:@"Item 1", @"Item 2", nil]; 를 선언하고 테이블뷰에서 data의 값을 가져온다고 하자. cell 추가 [self.data addObject:@"New Item"]; [table beginUpdates]; NSArray *paths = [NSArray arrayWithObject:[NSIndexPath indexPathForRow:1 inSection:0]]; [table inse..
//테이블뷰 섹션의 수 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 2; } //테이블뷰 Row의 갯수 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 1; } //테이블뷰 Row의 높이 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return 50; } //테이블뷰 섹션 타이틀 지정 - (NSString *) tableView:(UITableView *)table..