2012년 7월 24일 화요일

xcode 4 code snippet 사용하기

XCode에서 자주쓰는 코드를 빠르게 찾아서 코딩 하는 방법을 제공한다.
회사 동료덕에 알게된 기능인데
이걸 잘 활용하면 프로그래밍 속도가 붙을거 같다.

사용방법은
control + option + command + 2

View --> Utilities --> Show Code Snippet Library
를 선택하면 오른쪽 하단에  Xcode가 디폴트로 제공하는 것들이 보인다.

내 코드를 추가 하고 싶다면 Xcode  에디터에서 코드를 선택한다음 드레그 하여
그위치에 넣으면 간단한 대화 상자를 입력 하면 끝이다.

이렇게 만든 코드는 짧은 키워드로 빠르게 이용할수 있고
찾아서 드레그 해서 놓아도 된다.

두대 이상의 컴퓨터의 Xcode에서 공유하고 싶다면?

~/Library/Developer/Xcode/UserData/CodeSnippets/


이 경로를 ucloud나 Daum클라우드 같은 소프트웨어로 공유하면 끝이다.


iOS 프로그래밍팁 - 2탄 이미지 회전

이 팁은 그냥장기판 에서 장기알을 뒤집기 위해 이용했다.

한 초 에서 한에 이미지도 사실 보는 한자를 읽는 방향으로 이미지가 이루어져 있다.
처음에는 이를 모두 그래픽툴로 뒤집어서 사용했다.

하지만 이미지 리소스를 원본 그대로 하고 코드로 180도 회전시킬수 있다면
그러한 수고는 필요 없다.

역시 알지 못하면 손발이 고생한다.

그냥장기판 앱에서는 한의 장기 알이 180도 회전 되어야 하고
그래야 사람대 사람이 둘때 공평하게 가독성(?) 이 있다고 생각 했다.
또한 한쪽 진영에 잇는 모든 탭바및  탭바 컨트롤 버튼등도 모두 180도 회전
되어 있어야 공평하다.

 toolbar2.transform = CGAffineTransformMakeRotation(3.141592);

툴바의 회전이다.


메세지 박스로 이용하는 UIAlertView의 회전은 transform = CGAffineTransformMakeRotaion()을 이용해도 되지 않는다.


이는 살짝 꼼수가 필요하다. 

아래와 같이 단말기에 상태를 바꿔 줘야 UIAlertView를 회전 시킬수 있다.
[UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationPortrait;

[UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationPortraitUpsideDown;

이로서 그냥 장기판 앱은 위에서 보나 아래서 보나 같은 UI와 같은 AlertView를 구현 하였다.


2012년 7월 23일 월요일

iOS 프로그래밍팁 - 1탄 앱 삭제 할때처럼 좌우로 흔들 흔들 효과

이번 팁은 닥치고덧셈
에서 힌트를 누르면 정답 숫자 들이 흔들 흔들
마치 앱을 삭제 할때 롱터치 하고 나면 아이콘이 흔들 흔들 거리는 효과이다.


        
        CGAffineTransform leftWobble = CGAffineTransformRotate(CGAffineTransformIdentity, RADIANS(-5.0));
        CGAffineTransform rightWobble = CGAffineTransformRotate(CGAffineTransformIdentity, RADIANS(5.0));
        
        btn.transform = leftWobble;  
        
        [UIView beginAnimations:@"wobble" context:btn];
        [UIView setAnimationRepeatAutoreverses:YES]; 
        [UIView setAnimationRepeatCount:10];
        [UIView setAnimationDuration:0.2];
        [UIView setAnimationDelegate:self];
        [UIView setAnimationDidStopSelector:@selector(wobbleEnded:finished:context:)];
        
        btn.transform = rightWobble; 
        
        [UIView commitAnimations];



- (void) wobbleEnded:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context 
{
    if ([finished boolValue]) {
        UIView* item = (UIView *)context;
        item.transform = CGAffineTransformIdentity;
    }
}


btn (UIButton) 객체를 leftWooble, rightWooble로 transform 하면서 흔들 흔들 
10회 하도록 하는 에니메이션이다.



2012년 7월 4일 수요일

초간단 osx svn 서버

요즘은 git가 대세 라고 한다는데..

Xcode에서도 git어쩌구 해서 한번 익혀 보려고 했는데. 아직도 못하는 옛날 개발자이다.
iOS앱을 배포 하고 나름 버젼업도 하고 하면서
svn서버를 로컬에다 만들고
svnroot를 클라우드 서비스에 공유 폴더로 하고
해서 사용하고 있었다.
머 혼자 사용하는데는 문제 없고 잘사용하고 있었다.

svn co file:///Users/sparrow/svnroot~~
머 이렇게 사용하는것도 불편함이 없었고
Xcode도 잘 되서 그냥 사용했다.

여기까지는 osx lion에 이미 다 세팅되어 있는 svn을

svn root 디렉토리 만들고
# mkdir svnroot

# svnadmin create /Users/sparrow/svnroot


이렇게 하면 머 그냥 끝이다.


로컬에서 xcode로 작업하는데 전혀 문제가 없다.

다른 장비에서 리모트 엑세스를 하려면.


다음과 같이 하면 된다.

환경설정 --> 공유 --> 원격 로그인 체크

다른장비에서

svn co svn+ssh://sparrow@192.168.11.8/Users/sparrow/svnroot/~~~

이렇게 access할수 있다.

2012년 2월 6일 월요일

osx X11에서 dpi설정

defaults write org.x.X11 dpi -int 75

우선 이런 작업이 필요한 이유는 eclipse를 쓰는데
장비에설치된 eclipse를 사용할때 X11을 사용하게 되면 폰트가
로컬에서 실행된 eclipse와 다르게 보여서

상대적으로  X11로 수행된게 크기 때문에
또 장비에서 사용하는 이유는 디버깅인데.

리모트 디버깅이 안됨 (linux gdbserver , mac gdb 레지스터 포멧이 다름)  에러를
해결 해지 못하였다.

하여 X11로 eclipse를 수행한다.
글씨가 크게 나오는것은 상당히 곤란하다.

mac에 X11의 dpi를 75로 설정 하니 거의 비슷한 수준의ㅣ 크기로 나온다.
(96일경우 커지는듯 하다.)


2012년 1월 18일 수요일

버튼 뒤집기 ?? (카드 게임 에서 view 뒤집기 효과)


닥치고 기억을 만들면서 버튼을 터치 하면 뒤집게 하는 효과 작성에 
이용된 코드이다.



- (void) toFrontBtnImage: (UIButton *)btn
{
    UIImage * img;
    NSString * fileName;
    fileName = (NSString *)[mCountryNameArray objectAtIndex:flagsArray[btn.tag]];
    
    img = [UIImage imageNamed:fileName];        
    flagSide[btn.tag] = FRONT;
    
    CGPoint startpoint = CGPointMake(0, 0);
    [img drawAtPoint:startpoint];

    [UIView beginAnimations:@"toFrontBtnImage" context:nil];
    [UIView setAnimationDuration:ANIMATION_DURATION];
    
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:btn cache:YES];
    
    [btn setImage:img forState:UIControlStateNormal];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
    [UIView commitAnimations];
    btn.enabled = YES;
}

- (void) toBackBtnImage: (UIButton *)btn
{
    UIImage * img;
    img = [UIImage imageNamed:@"back.png"];
    flagSide[btn.tag] = BACK;
    
    CGPoint startpoint = CGPointMake(0, 0);
    [img drawAtPoint:startpoint];
    
    [UIView beginAnimations:@"toBackBtnImage" context:nil];
    [UIView setAnimationDuration:ANIMATION_DURATION];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; // 빠져나갈때 가속
    
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:btn cache:YES];
    
    [btn setImage:img forState:UIControlStateNormal];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
    [UIView commitAnimations];
    btn.enabled = YES;
}

위 함수는 하나는 국기 모양으로 뒤집고 
하나는 백 배경으로 뒤집는다.

animationDidStop 함수를 만들어서
에니메이션이 종료하면 처리 할수 있도록 처리 한다.

- (void) animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context 
{
    if ([animationID isEqualToString:@"toFrontBtnImage"]){
        //처리 하고 싶은 일...
    }





2011년 11월 17일 목요일

mac osx에 Dock에서 Ctrl+마우스로 눌렀을때 최근 연 파일리스트 제거하기

만일 그럴일은 없지만 야구 동영상을 봣다치자.
그럼 Dock에서 동영상 플레이어 어플을 오래도록 클릭하거나 Ctrl+클릭을 하면
최근 파일 목록이 나온다.

나는 좀 컴퓨터를 한다.
봣다 그럼 뒷처리는 깨끗하게 처리한다.
그래 프로그램 메뉴에서 최근 연파일 -> 목록 지우기.

그래도 Dock에는 남아있다.
이걸 지우는 방법은
~/Library/Preferences

여기에 보면 프로그램 별로 파일들이 있는데
그냥 귀찮으면 프로그램이름이 들어간 파일을 모두 지워버린다.

xxx.xxx.xxx.LSSharedFileList.*를 삭제한다.