Dev/iOS2013. 4. 17. 11:06

iOS6 으로 업데이트 되면서 기존의 shouldAutorotateToInterfaceOrientation 메소드가 deprecated 되었습니다.

iOS6 에서는 shouldAutorotate, supportedInterfaceOrientations, preferredInterfaceOrientationForPresentation 이렇게 3가지 메소드로 구현해야 합니다.

deployment taget 을 5.0 부터 하기 위해서는 iOS5 방식과 iOS6 방식 2가지 모두 구현하면 됩니다.

아래 코드 참고 하세요. (landscape 모드 설정 입니다)

//iOS5 setting
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    
    return (interfaceOrientation == UIInterfaceOrientationLandscapeRight) || (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}

//iOS6 setting
- (BOOL)shouldAutorotate
{
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskLandscape;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    
    return UIInterfaceOrientationLandscapeLeft;
}
  


Posted by 놀란
Dev/iOS2012. 4. 9. 23:20

너무 어이가 없어서 블로그에 남깁니다.

회사 동료가 스노우 레오파드(snow leopard) OS 에 XCode 4.2 를 설치하려고 했으나, 계속해서 알 수 없는 원인으로 설치 실패가 발생 했습니다.

구 버전들을 삭제하고 재설치 했으나, 여전히 같은 증상.

결국 해결 방법을 찾았는데

방법은 현재 OS의 날짜를 2012년 1월 이전 으로 설정하면 정상적으로 설치가 됩니다.

OS, XCode 버전 올리게 할려고 별 짓을 다하는군요.

출처 : http://stackoverflow.com/questions/9964528/xcode-installation-failed

Posted by 놀란
Dev/iOS2012. 3. 8. 17:18

view 페이지가 아닌 소스 상에서 현재 윈도우나 뷰를 가져올 일이 생길 때 사용해야함.


현재 어플리케이션의 윈도우 가져오기

UIWindow *window = [[UIApplication sharedApplication] keyWindow];


현재 어플리케이션의 VIEW 가져오기 (index 번호로 VIEW 선택)

UIView *view = [[[[UIApplication sharedApplication] keyWindow] subviews] objectAtIndex:0];



Posted by 놀란
Dev/iOS2011. 12. 14. 16:18


NSDate *startTime = [NSDate date];


[~~~ 작업 내용];;;;

    

NSDate *endTime = [NSDate date];


NSLog(@"Completed in %f seconds", [endTime timeIntervalSinceDate:startTime]);



Posted by 놀란
Dev/iOS2011. 10. 26. 15:28

Project -> Build Settings -> Apple LLVM compiler 3.0 - Language

Objective-C Automatic Reference Counting

옵션 YES-NO 설정 값 바꾸면 됩니다.

찾느라 고생했네요. ㅠㅠ

Posted by 놀란
Dev/iOS2011. 10. 5. 14:16

Property 옵션 값들이 계속 헷갈렸었는데....


@property (


  1. atomic OR nonatomic
    1. 이 두 속성중 하나를 선택하는 것으로 기본값은 atomic입니다. 이부분은 멀티스레딩에 관련된 부분으로 보통 nonatomic을 사용합니다. 자세한건 개발자 문서 참고
  2. assign OR retain OR copy
    1. setter에서 객체를 지정 받을때 
      1. assign의 경우 주소값만 지정받고
      2. retain의 경우 기존것을 release후 새로 받은걸 retain합니다.
      3. copy의 경우 기존것을 release후 새로 받은걸 copy합니다.
    2. 이부분은 setter에 관련있고 getter와는 관련 없습니다.
  3. readonly OR 없음
    1. readonly설정되면 setter가 없습니다. 말그대로 읽기 전용이죠


- 참고 - 문씨의블로그 (http://lab.smoon.kr/70)

Posted by 놀란
Dev/iOS2011. 9. 27. 16:07

CGAffineTransform landscapeTransform = CGAffineTransformMakeRotation(degreesToRadian(40));

[ImageView setTransform:landscapeTransform];


Posted by 놀란
Dev/iOS2011. 9. 27. 16:04


- (UIImage *)convertImageToGrayScale:(UIImage *)image { 

// Create image rectangle with current image width/height 

CGRect imageRect = CGRectMake(0, 0, image.size.width, image.size.height);

// Grayscale color space 

CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();

// Create bitmap content with current image size and grayscale colorspace 

CGContextRef context = CGBitmapContextCreate(nil, image.size.width, image.size.height, 8, 0, colorSpace, kCGImageAlphaNone);

// Draw image into current context, with specified rectangle 

// using previously defined context (with grayscale colorspace) 

CGContextDrawImage(context, imageRect, [image CGImage]);

// Create bitmap image info from pixel data in current context 

CGImageRef imageRef = CGBitmapContextCreateImage(context);

// Create a new UIImage object  

UIImage *newImage = [UIImage imageWithCGImage:imageRef];

// Release colorspace, context and bitmap information 

CGColorSpaceRelease(colorSpace);

CGContextRelease(context);

CFRelease(imageRef);

// Return the new grayscale image 

return newImage;

}

파라미터를 추가하면 scale도 변경 가능하네요.


Posted by 놀란
Dev/iOS2011. 9. 23. 16:41


UIImage *origianlImage = [UIImage imageNamed:@"source.png"];

UIImage *flippedImage = [UIImage imageWithCGImage:originalImage.CGImage

scale:1.0 

orientaion:UIImageOrientationLeftMirrored];

orientaion 종류

typedef enum {

    UIImageOrientationUp,            // default orientation

    UIImageOrientationDown,          // 180 deg rotation

    UIImageOrientationLeft,          // 90 deg CCW

    UIImageOrientationRight,         // 90 deg CW

    UIImageOrientationUpMirrored,    // as above but image mirrored along other axis. horizontal flip

    

    UIImageOrientationDownMirrored,  // horizontal flip

    UIImageOrientationLeftMirrored,  // vertical flip

    UIImageOrientationRightMirrored, // vertical flip

} UIImageOrientation;

Posted by 놀란
Dev/iOS2011. 8. 30. 12:02

특정 instance 의 클래스 여부를 확인한다.

- (BOOL)isKindOfClass:(Class)aClass

retrun 값은 BOOL (1, 0) - 해당 클래스에 속하면 YES(1), 아니면 NO(0)

사용법:

id result  일 경우,

[result isKindOfClass:[NSArray class]];


- result가 NSArray 인지 확인!

Posted by 놀란
Dev/iOS2011. 8. 3. 21:05

  • XCode4 에서는 XCode3 에서 처럼 ip 주소로 등록이 안됨.
  • 도메인 주소가 필요함.
  • /private/etc/hosts 파일 수정 (저 같은 경우 (자신의 i.p address)     hosturl 으로 추가)
  • XCode4 repository 주소에 http://hosturl/myproject 입력.
  • 아이디/패스워드 입력
  • 참고 URL : http://stackoverflow.com/questions/6748387/xcode4-add-repository-host-unreachable
  • 이와 다른 경우로는 터미널에서 svn list 명령어를 이용하여 로그인 인증을 하면 되는 경우도 있다고 함.
    • svn list http://(i.p address)/myproject

Posted by 놀란
Dev/iOS2011. 8. 2. 14:38

일반적으로 바탕화면에 숫자 표시 하는 것을 뱃지 표시라 한다.

[[UIApplication sharedApplication] setApplicationIconBadgeNumber: value(숫자) ];

Posted by 놀란
Dev/iOS2011. 8. 2. 11:00

새로 나온 OSX Lion 을 설치했습니다.

새로운 기분으로 XCode4 로 설치하기로 마음 먹었습니다. (Lion 에는 Xcode 3 설치가 안된다고도 합니다.)

Lion 에서는 app store 를 통해 Xcode4 를 무료로 설치할 수 있습니다.

Lion의 바뀐 메뉴 Launchpad 를 통해서 Xcode4 installer 를 실행 시키면 설치가 시작됩니다.

그러나, 설치 도중에 iTunes 가 실행 중이라며 닫아주라는 메시지를 받을 수 있습니다.

분명히 iTunes 는 닫혀있는데 왜 뜨는지 알 수 없습니다. 알럿 창은 닫히지도 않습니다.

이럴 때, 윈도우의 작업관리자와 같은 '활성상태보기' 를 실행시켜서 확인해보면 됩니다.

'활성상태보기'는 Lanchpad -> 유틸리티 -> 활성상태보기 에 위치하고 있습니다.

활성상태보기 오른쪽 상단의 검색 창에 'itunes' 를 입력하면 iTunes helper 가 실행중 상태로 뜨는 걸 확인할 수 있습니다.

이것을 강제종료(프로세스 종료) 해주면 끝!

바로 설치가 진행됩니다.


여기까지 입니다.

Posted by 놀란
Dev/iOS2011. 7. 20. 12:43

/* Points. */


struct CGPoint {

  CGFloat x;

  CGFloat y;

};

typedef struct CGPoint CGPoint;


/* Sizes. */


struct CGSize {

  CGFloat width;

  CGFloat height;

};

typedef struct CGSize CGSize;


/* Rectangles. */


struct CGRect {

  CGPoint origin;

  CGSize size;

};

typedef struct CGRect CGRect;



Posted by 놀란
Dev/iOS2011. 7. 11. 15:01

기본 번들 디렉토리 가져오기

NSString *bundlePath = [[NSBundle mainBundle] bundlePath];

디렉토리내 파일리스트 가져오기

NSArray *arrContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:bundlePath error:nil];

for (NSString *strFileName in arrContents) {

NSLog(@"filename--> %@", strFileName);

}


Posted by 놀란
Dev/iOS2011. 6. 27. 11:36

한 클래스로부터 상속한 메서드를 오버라이드하는 대신 그 메서드를 확장하는 것도 가능하다. 메서드를 확장하기 위해서는 새로운 구현 파일에서 메서드를 오버라이드하면서 상위 클래스의 같은 메서드를 호출하면 된다.

즉, 오버라이드할 메서드의 첫 부분에서 [super 메서드이름]; 과 같이 넣어줌으로써 메서드 오버라이드가 진행되기 전에 상위 메서드의 원 기능을 동작시켜 주는 것이다.


첫 부분인지 제일 마지막 부분에 쓰는 것 중에 어떤게 맞는건가 했는데... 첫 부분이였구나...


출처: 아이폰 프로그래밍 가이드 (프리렉)

Posted by 놀란
Dev/iOS2011. 6. 20. 15:08

  • 누르기(Tap) - 컨트롤 혹은 아이템을 누르거나 선택
  • 끌기(Drag)   - 스크롤 혹은 이동
  • 튕기기(Flick) - 빠른 스크롤 혹은 빠른 이동
  • 쓸기(Swipe)   - 테이블 뷰에서 삭제 버튼을 드러냄
  • 두번 누르기(Double Tap) - 확대한 후 컨텐츠나 이미지의 중앙을 맞춤. 이미 확대되어 있으면 축소
  • 벌리기(Pinch open) - 확대
  • 오므라기(Pinch close) - 축소
  • 터치한 후 유지(Touch and hold) - 편집 가능한 텍스트에서 커서가 가리키는 곳에 돋보기를 보여줌



Posted by 놀란
Dev/iOS2011. 6. 2. 22:17

문자열을 식별자를 이용하여 배열로 나누기

componentsSeparatedByString 메소드

NSString *string = @"one:two:three:four";

NSArray *chunks = [string componetsSeparatedByString: @":"];


반대로 배열의 객체를 합쳐 하나의 문자열로 만들기

componentsJoinedByString 메소드 사용

string = [chunks componentsJoinedByString: @"-"];

결과 @"one-two-three-four"



출처 : Objective-C 2.0 (이종웅 저)

Posted by 놀란
Dev/iOS2011. 6. 2. 21:56

arrayWithObject : 클래스 메소드를 사용해서 새 NSArray 를 만들 수 있다. 배열의 목록을 콤마로 구분해서 인수를 주고 목록의 끝에 배열의 끝임을 알리는 nil 을 넣는다. 이것이 배열의 중간에 nil 을 저장할 수 없는 이유 중의 하나이다.

NSArray *array;

array = [NSArray arrayWithObject: @"one", "two", "three", "four", nil];




배열을 만들고 나면 다음과 같이 배열이 담고 있는 객체의 개수를 얻을 수 있다.

- (unsigned) count;

ex) [array count];




다음과 같이 특정 인덱스의 객체를 가져올 수 있다.

- (id) objectAtIndex: (unsigned int) index;

ex) [array objectAtIndex: 1];




다음 코드는 위의 메소드를 이용해서 작성하였다.


int i;

NSArray *array;

array = [NSArray arrayWithObject: @"one", "two", "three", "four", nil];

for (i = 0; i < [array count]; i++) {

    NSLog(@"index %d has %@.", i, [array objectAtIndex: i] );

}



출처 : Objective-C 2.0 (이종웅 저)

Posted by 놀란