오늘 포스팅 할 내용은 Objective-C Format String 에서 문자열 Format String 쓰는법입니다.
Objective C 도 C언어 방식으로 처리를 할수 있습니다 관련 내용은 제가 일전에 올려 놓은것을 확인하시고요
http://ansur.blogspot.kr/2015/10/cc-format-string.html
오늘은 CoCoa Frame 에서 제공하는 NSString 기준으로 처리 방법을 설명하겠습니다.
간단한 예로 10 이라는 값을 10자리로 앞에 비어있는 곳은 0으로 패딩하는법을 설명 드리겠습니다.
<예>
// string 으로 format 을 활용하는 방법은 여러가지가 있으나 간단한 방법으로 접근 한다.
NSString* strPaddingNum;
strPaddingNum = [NSString stringWithFormat:@"%010d", 10];
위와 같이 쓰면 결과는 $strPaddingNum 에 "0000000010" 와 같은 값이 들어 가게 됩니다.
기본적은 프로그래밍 서적에 보시면 printf 에 매칭 되는 타입은 나와 있는데
기본 타입과 Objective-C 에서 추가적인것과 틀린것들을 나열하겠습니다.
%d => int 타입.
%ld => long 타입.
%s => 문자열 타입 (기본적인 문자열 char*)
%@ => Objective-C 에서 관리되는 문자열
%f => float, double
%c => char
%x => 16진수 소문자 형태로 출력.
2016년 5월 30일 월요일
2015년 9월 8일 화요일
Single Line Text Drawing
라벨 컨트롤을 오버라이딩 하여 처리 하는중 "drawAtPoint" 또는 "drawInRect" 함수를 이용하여 텍스트를
출력하여 처리 하는데 지정된 사각 영역에 텍스트를 출려하는중 텍스트가 지정된 영역보다 많을때 자동으로 줄바꿈이
일어났다. 원하는것은 그게 아닌데 ㅡㅡ..
찾아 보던중 싱글 라인을 지정하는 옵션은 없구 텍스트 DrawMode 를 변경 해줘야 하는걸 알았다.
CGContextSetTextDrawingMode(context, kCGTextFillClip);
위와 같이 텍스트를 그리기전에 모드를 변경 해줘야 싱글 라인으로 출력이 가능하다.
뒤에 옵션은 소스를 따라가보면 여러가지 옵션을 볼수 있으므로 원하는 옵션으로 처리를 하면 끝..
라벨:
iPad,
iPhone,
Objective-C,
XCode
2015년 2월 9일 월요일
Objective-C 기준 스트링 검색/추출/분리(Find/SubString/Split)
오늘 포스팅 할 내용은 Objective-C 환경에서 스트링 검색/추출/분리 작업에 대해서 이야기 합니다.
프로그램을 만들다 보면 스트링 핸들링은 중요한 항목중에 하나이고 뭐 대충 검색 해보면 많은곳에서 가이드 하고 있습니다.
그래도 샘플을 찾다 보면 내가 제시한 샘플을 찾고 자 하는 사람들을 위해서 ^^
일단 선행 조건은 특정 디렉토리에 파일이 있을경우 파일명만 찾아서 추출하고 과정과 디렉토리 를 "\\" 문자로 분리 하는 과정을
소개 합니다.
NSString* strOrgPath = @"C:\\Temp\\Dummy.txt";
NSString* strOnlyFileName =@ "";
// 파일을 분리 하기 위한 Reverse Find
NSRange rangeFind = [strOrgPath rangeOfString:@"\\" options:NSBackwardsSearch];
// 파일 이름 분리 작업
if (rangeFind.location != NSNotFound 0)
{
strOnlyFileName = [strOrgPath substringWithRange:NSMakeRange(rangeFind.location+1, [strOrgPath length]-(rangeFind.location+1))];
NSLog(@"%@", strOnlyFileName);
}
//디렉토리를 "\\" 로 분리 하는 작업
NSArray* sArrSplitPath = [strOrgPath componentsSeparatedByString:@"\\"];
for (NSString* sItem in sArrSplitPath)
{
NSLog(@"%@", sItem);
}
여기까지 ^^;
프로그램을 만들다 보면 스트링 핸들링은 중요한 항목중에 하나이고 뭐 대충 검색 해보면 많은곳에서 가이드 하고 있습니다.
그래도 샘플을 찾다 보면 내가 제시한 샘플을 찾고 자 하는 사람들을 위해서 ^^
일단 선행 조건은 특정 디렉토리에 파일이 있을경우 파일명만 찾아서 추출하고 과정과 디렉토리 를 "\\" 문자로 분리 하는 과정을
소개 합니다.
NSString* strOrgPath = @"C:\\Temp\\Dummy.txt";
NSString* strOnlyFileName =
// 파일을 분리 하기 위한 Reverse Find
NSRange rangeFind = [strOrgPath rangeOfString:@"\\" options:NSBackwardsSearch];
// 파일 이름 분리 작업
if (rangeFind.location != NSNotFound 0)
{
strOnlyFileName = [strOrgPath substringWithRange:NSMakeRange(rangeFind.location+1, [strOrgPath length]-(rangeFind.location+1))];
NSLog(@"%@", strOnlyFileName);
}
//디렉토리를 "\\" 로 분리 하는 작업
NSArray* sArrSplitPath = [strOrgPath componentsSeparatedByString:@"\\"];
for (NSString* sItem in sArrSplitPath)
{
NSLog(@"%@", sItem);
}
여기까지 ^^;
2012년 12월 12일 수요일
회전 처리시에 폰이 눕거나 세워질때 이벤트 처리 안하는 방법.
아이폰 코딩시 폰이 눕거나 세워질때에도 이벤트가 발생 하기 때문에 이를 막기 위해서는
아래와 같이 코드를 검사하여 리턴 시키면 된다.
// 폰이 눞거나 세울때에는 처리 안하게 막는다. -by Berdo 2012-12-12
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
if (orientation == UIDeviceOrientationFaceUp || orientation == UIDeviceOrientationFaceDown || orientation == UIDeviceOrientationUnknown)
{
return;
}
아래와 같이 코드를 검사하여 리턴 시키면 된다.
// 폰이 눞거나 세울때에는 처리 안하게 막는다. -by Berdo 2012-12-12
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
if (orientation == UIDeviceOrientationFaceUp || orientation == UIDeviceOrientationFaceDown || orientation == UIDeviceOrientationUnknown)
{
return;
}
2012년 11월 6일 화요일
could not launch 에러 해결하기.
자주 발생 하지 않지만 가끔씩 "could not launch" No such file or directory 라는 에러 메세지 와 함께
기기 디버그가 안되는 현상이 발생한다.
현상이 발생하면 아래와 같은 절차로 처리 하면 대부분은 해결됨.
1. 일단 디바이스를 케이블에서 분리하신 후에
2. 테스트하는 설치된 앱을 지웁니다.
3. XCode 자체를 완전 종료합니다.
4. 홈 디렉토리 아래 다음의 경로 파일 아래 있는 디렉토리를 싹 지워 줍니다.
~/Library/Developer/Xcode/
DerivedData/
밑에 해당 프로젝트 폴더를 지우세요.
5. XCode를 재시작하시고, 디바이스를 연결하셔서 실행 시켜 보세요.
그럼 즐프...
기기 디버그가 안되는 현상이 발생한다.
현상이 발생하면 아래와 같은 절차로 처리 하면 대부분은 해결됨.
1. 일단 디바이스를 케이블에서 분리하신 후에
2. 테스트하는 설치된 앱을 지웁니다.
3. XCode 자체를 완전 종료합니다.
4. 홈 디렉토리 아래 다음의 경로 파일 아래 있는 디렉토리를 싹 지워 줍니다.
~/Library/Developer/Xcode/
밑에 해당 프로젝트 폴더를 지우세요.
5. XCode를 재시작하시고, 디바이스를 연결하셔서 실행 시켜 보세요.
그럼 즐프...
2012년 8월 13일 월요일
iPhone 날짜 일수 계산
iPhone 개발할때 두개의 날짜를 가지고 날짜 일수를 계산 하는 방법입니다.
NSString* strEndDate = "2012.08.05";
NSDateFormatter *dateFormat = [[[NSDateFormatter alloc] init] autorelease];
[dateFormat setDateFormat:@"YYYY.MM.dd"];
NSDate* pEndDate = [dateFormat dateFromString:strEndDate];
double timeInterval = [pEndDate timeIntervalSinceNow];
int nRemainDay = (int)((double)timeInterval/(3600.0*24.00));
위 코드에 nRemainDay 에 날짜 차이값을 얻을수 있습니다 ^^.
NSString* strEndDate = "2012.08.05";
NSDateFormatter *dateFormat = [[[NSDateFormatter alloc] init] autorelease];
[dateFormat setDateFormat:@"YYYY.MM.dd"];
NSDate* pEndDate = [dateFormat dateFromString:strEndDate];
double timeInterval = [pEndDate timeIntervalSinceNow];
int nRemainDay = (int)((double)timeInterval/(3600.0*24.00));
위 코드에 nRemainDay 에 날짜 차이값을 얻을수 있습니다 ^^.
2012년 8월 9일 목요일
UINavigationController 기본
UINavigationController를 사용할때 쓸만한 내용을 발견하여 정리해 봅니다.
1. 초기화
UINavigationController의 초기화를 위해서는 보통 가장 루트가 되는 뷰컨트롤러를 지정하게 됩니다.
2. 새로운 뷰로 이동하기/빠져 나오기
새로운뷰로 이동하는것은 다음과 이해하시면 좋을것 같습니다. 네비게이션컨트롤러는 기본적으로 스택(Stack)과 같은 구조로 동작을 하며, 눈에 보이는 뷰는 항상 가장 마지막에 삽입된 객체(뷰)가 됩니다.
그래서인지, 뷰를 삽입하고 빼는 메서드들의 이름이 push/pop으로 시작을 하는군요.
3. 최상위 뷰로 한번에 이동하기
여러개의 뷰를 통해서 들어가 있는 상태라면 다음과 같은 방법으로 한번에 최상위로 빠져나갈 수 있습니다.
4. 모달(Modal)뷰 형식으로 띄우기
네비게이션 컨트롤러를 사용하긴 하지만 페이징의 느낌이 들지 않게 별개의 페이지처럼 띄우고 싶을 경우가 있습니다. 다음의 메서드를 사용하여 상단의 네비게이션바조차 나오지 않는 풀스크린의 뷰를 띄울 수 있습니다.
참고 : http://qstufie.com/blog/bb/2008/10/uinavigationcontroller-how-to/
1. 초기화
UINavigationController의 초기화를 위해서는 보통 가장 루트가 되는 뷰컨트롤러를 지정하게 됩니다.
UIViewController *viewController = [[UIViewController alloc] init]; UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:viewController];
2. 새로운 뷰로 이동하기/빠져 나오기
새로운뷰로 이동하는것은 다음과 이해하시면 좋을것 같습니다. 네비게이션컨트롤러는 기본적으로 스택(Stack)과 같은 구조로 동작을 하며, 눈에 보이는 뷰는 항상 가장 마지막에 삽입된 객체(뷰)가 됩니다.
그래서인지, 뷰를 삽입하고 빼는 메서드들의 이름이 push/pop으로 시작을 하는군요.
// 새로운 뷰 삽입하기 [navController pushViewController:newViewController animated:YES]; // 뷰컨트롤러 안에서 - 자기 자신을 네비게이션 컨트롤러에서 제거 [self.navigationController popViewControllerAnimated:YES]; // 어디서든지 네비게이션 컨트롤러에 접근 가능할 때 [navController popViewControllerAnimated:YES];
3. 최상위 뷰로 한번에 이동하기
여러개의 뷰를 통해서 들어가 있는 상태라면 다음과 같은 방법으로 한번에 최상위로 빠져나갈 수 있습니다.
[self.navigationController popToRootViewControllerAnimated:YES];
4. 모달(Modal)뷰 형식으로 띄우기
네비게이션 컨트롤러를 사용하긴 하지만 페이징의 느낌이 들지 않게 별개의 페이지처럼 띄우고 싶을 경우가 있습니다. 다음의 메서드를 사용하여 상단의 네비게이션바조차 나오지 않는 풀스크린의 뷰를 띄울 수 있습니다.
// 모달 뷰 띄우기 [self.navigationController presentModalViewController:modelViewController animated:YES]; // 모달 뷰 제거 - 모달 뷰 컨트롤러 내부에서 [self dismissModalViewControllerAnimated:YES];
참고 : http://qstufie.com/blog/bb/2008/10/uinavigationcontroller-how-to/
피드 구독하기:
글 (Atom)