UIImageView 는 UIImage 에 상관 없이 조절해도 되지만 객체로 갖고 있는 UIImage 크기는 변하지 않는다.

이미지 사이즈를 원하는 만큼 줄이는 방법

http://theeye.pe.kr/entry/how-to-resize-image-on-iPhone-development
Posted by 독뽀
,


frame: 해당 객체가 붙어있는 superView 기준
bounds: 해당 객체 자신 기준




파랑 - 윈도우(슈퍼 뷰)
주황 - UIImageView
연두 - UIImage나 그 외 어떤 오브젝트

종속 관계는 파랑 ∋ 주황 ∋ 연두



origin: 좌표
size: 크기


*.frame.origin/*.frame.size는 슈퍼 뷰
*.bounds.origin/*.bounds.size는 해당 뷰

setFrame: / setBounds: 메서드 이용 시 염두하고 사용해야 한다.

frame/bounds 만들기

CGRectMake
(*.origin.x, *.origin.y, *.size.width, *.size.height)


 

'iOS > References' 카테고리의 다른 글

APNS Push Notification  (0) 2011.07.04
Content-type  (0) 2011.06.28
Posted by 독뽀
,

'iOS > Skills' 카테고리의 다른 글

네비게이션 타이틀 글자 크기 조절  (0) 2011.06.20
UIImage 사이즈 변경하기  (0) 2011.06.15
UITableView 당겨서 업데이트  (0) 2011.06.14
모달 뷰 사용(일종의 팝업 윈도우)  (1) 2010.11.23
애니메이션 주기  (0) 2010.11.10
Posted by 독뽀
,
Posted by 독뽀
,

Modal의 뜻은 '양식이 있는, 모양의, 양식의' 이다.
'양식이 있는' 이라는 뜻에서 선택 사항이 있는 Alert와 통하는 부분도 있다.
그렇지만 모달은 더 많은 컨트롤러들을 제공한다.
ModalView 자체가 UIViewController의 서브클래스이기 때문에 일반적인 xib 파일의 사용이 가능하다.
임시로 뷰를 띄우고 선택 사항 값들을 닫음 혹은 어떤 액션과 동시에 임시 뷰를 없애는 용도 등에 많이 쓰인다.

모달 뷰를 띄울 클래스의 메서드에서..
ScoreboardModalView *modalView = [[ScoreboardModalView alloc] init];
[self presentModalViewController:modalView animated:YES];
}

ScoreboardModalView 에서 돌아가기 혹은 x 표시 등 자주 쓰이는 여러 액션들이 있을 것이다.
그 메서드에 들어갈 내용은 아래와 같다.

- (IBAction)goBack:(id)sender {
[self dismissModalViewControllerAnimated:YES];
}

아래와 같이 전환 효과를 변경할 수도 있다.

[modalView setModalTransitionStyle:UIModalTransitionStylePartialCurl];
[self presentModalViewController:viewController animated:YES];

// UIModalTransitionStyleCoverVertical : 모달 뷰가 아래서 위로 덮으며 전환됩니다. (기본값)
//
UIModalTransitionStyleFlipHorizontal : 앞면의 부모 뷰가 회전되어 뒷면의 모달 뷰로 전환됩니다
// UIModalTransitionStyleCrossDissolve : 부모 뷰가 서서히 사라짐과 동시에 모달 뷰로 전환됩니다.

// UIModalTransitionStylePartialCurl : 부모 뷰가 종이처럼 휘어지며 모달 뷰로 전환됩니다.

[출처] iPhone SDK Tutorial 뷰를 모달로 띄우기

http://hyukmini.tistory.com/18?srchid=BR1http%3A%2F%2Fhyukmini.tistory.com%2F18
[출처] iOS의 다양한 뷰 전환 - 1. 모달 뷰 컨트롤러 전환과 효과

'iOS > Skills' 카테고리의 다른 글

ios3 -> ios4 CGImageRef 이미지 출력 속도 저하  (0) 2011.06.15
UITableView 당겨서 업데이트  (0) 2011.06.14
애니메이션 주기  (0) 2010.11.10
UIAlertView without Buttons - Please Wait Dialog  (0) 2010.07.21
MBProgressHUD  (0) 2010.07.21
Posted by 독뽀
,


// 더 이상 사용되지않는 그래픽 캐시를 지운다.
[[CCTextureCache sharedTextureCache] removeUnusedTextures];

// CCSpriteSheet는 이미지 정보(OpenGL에서 쓰이는 texture)와 CCSprite를 담을 NSMutableArray를 멤버로 갖고 있다.
CCSprite *sprite = [CCSprite spriteWithTexture:sheet.texture rect:CGRectMake(0, 0, 90, 90)];
// 따라서 위와 같이 CCSpriteSheet의 texture 멤버 변수에 접근하면 texture를 받아올 수 있다.

[[CCDirector sharedDirector] pushScene];
// pushScene 이후 popScene을 할 경우, 최소한 하나 이상의 runningScene이 CCDirector에 남아 있어야 한다.
[[CCDirector sharedDirector] popScene];
// popScene 이후나 직전에는 더 이상 사용되지 않는 그래픽 캐시를 지워야 한다.
[[CCTextureCache sharedTextureCache] removeUnusedTextures];

// 각 Scene에서는 addChild를 통해 덮여진 tag가 있는 CCSpriteSheet들을 tag로 불러올 수 있다.
CCSpriteSheet *sheet = (CCSpriteSheet *)[self getChildByTag:kTagSpriteSheet];

// 뽑아온 CCSpriteSheet에서 또한 태그를 통해 CCSprite를 뽑아낼 수 있다.
CCSprite *sprite = (CCSprite *)[sheet getChildByTag:0];

'iOS > Cocos2d Tutorials' 카테고리의 다른 글

cocos2d SimpleAudioEngine  (0) 2010.11.03
메뉴 화면 만들기~!  (0) 2010.10.24
cocos2d 0.99.4 -> 0.99.5 beta3 로 버전 변경  (0) 2010.10.22
Hello World  (0) 2010.09.17
cocos2d setup guide  (0) 2010.09.01
Posted by 독뽀
,

애니메이션 주기

iOS/Skills 2010. 11. 10. 14:01


UIImageView 의 IBOutlet 하나 필요, (helicopterImageVew)
충돌을 확인할 UIImageView 의 IBOutlet 도 하나 필요(birdImageView)

경로를 따라 이동하는 Path 버튼과 프로펠러 회전을 시키는 Swing 버튼을 위한 두 개의 IBAction 필요


//초기화 부분..

{

  ...


    UIImage *heliImage1 = [UIImage imageNamed:@"heli_1.png"];

    UIImage *heliImage2 = [UIImage imageNamed:@"heli_2.png"];

    UIImage *heliImage3 = [UIImage imageNamed:@"heli_3.png"];

    UIImage *heliImage4 = [UIImage imageNamed:@"heli_4.png"];

    UIImage *heliImage5 = [UIImage imageNamed:@"heli_5.png"];

    UIImage *heliImage6 = [UIImage imageNamed:@"heli_6.png"];

    NSArray *animationImageArray = [NSArray arrayWithObjects:heliImage1, heliImage2,

heliImage3, heliImage4, heliImage5, heliImage6, nil];

    helicopterImageView.animationImages = animationImageArray;

    helicopterImageView.animationDuration = 0.1;

   ...
}
...

- (IBAction)toggleFlay:(id)sender

{

    if ([helicopterImageView isAnimating]){

        [helicopterImageView stopAnimating];

    } else {

        [helicopterImageView startAnimating];

    }

}


- (IBAction)moveThroughPath:(id)sender

{

    birdImageView.hidden = NO;

    

    //패쓰 만들기

    CGMutablePathRef aniPath = CGPathCreateMutable();

    CGPoint currCenter = helicopterImageView.center;

    CGAffineTransform xform = CGAffineTransformIdentity;

    CGPathMoveToPoint(aniPath, &xform, currCenter.x, currCenter.y);

    CGPathAddCurveToPoint(aniPath, &xform, -200, currCenter.y, 520, 400, 160, 400);

    

    //애니메이션 만들기

    CAKeyframeAnimation *keyAni = [CAKeyframeAnimation animation];

    keyAni.duration = 4.0;

    keyAni.path = aniPath;

    keyAni.rotationMode = kCAAnimationRotateAutoReverse;

    

    

    //레이어에 애니메이션을 더한다

    [NSTimer scheduledTimerWithTimeInterval:0.1

   target:self

 selector:@selector(collisionCheck:) userInfo:nil repeats:YES];

    [helicopterImageView.layer addAnimation:keyAni forKey:@"position"];

    

}


- (void)collisionCheck:(NSTimer *)timer

{

    CALayer *presentationLayer = helicopterImageView.layer.presentationLayer;

    CGRect presentationRect = presentationLayer.frame;

    CGRect birdRect = birdImageView.frame;

    

    if (CGRectIntersectsRect(presentationRect, birdRect)){

        NSLog(@"Collision");

        birdImageView.hidden = YES;

        [timer invalidate];

        timer = nil;

    }

}


'iOS > Skills' 카테고리의 다른 글

UITableView 당겨서 업데이트  (0) 2011.06.14
모달 뷰 사용(일종의 팝업 윈도우)  (1) 2010.11.23
UIAlertView without Buttons - Please Wait Dialog  (0) 2010.07.21
MBProgressHUD  (0) 2010.07.21
UIBarButtonSystemItem 추가된 아이템  (0) 2010.07.21
Posted by 독뽀
,

속도 때문에 프리로드를 해주니 심플 오디오 엔진 로드 상태라 속도에 전혀 지장이 없었다..
글 올려주신 분께 감사 감사 ~_~

http://cultbrain.elogin.co.kr/dokuwiki/doku.php?id=programming:cocos2d:cocosdenshion#cocosdenshion_cookbook
(링크 깨짐...)

'iOS > Cocos2d Tutorials' 카테고리의 다른 글

cocos2d 자꾸 깜박하는 것들;  (0) 2010.11.23
메뉴 화면 만들기~!  (0) 2010.10.24
cocos2d 0.99.4 -> 0.99.5 beta3 로 버전 변경  (0) 2010.10.22
Hello World  (0) 2010.09.17
cocos2d setup guide  (0) 2010.09.01
Posted by 독뽀
,

지금 윈도우라서 스샷 없이 설명..

1. cocos2d application 생성
2. HelloWorldScene.h/.m 을 수정합시다.
3. .m의 초기화 구현부를 살펴봅니다.
- (id)init
{
if ( (self=[super init]) ) {
// 요기가 초기화 부분
}
return
self;
}

저 초기화 부분을 싸그리 지웁니다. 그러면 처음 생성했을 때 빌드 앤 런 후 생기는 Hello World 글자가 없어집니다.
백지, 아니 흑지 상태가 되지요(빈 화면)

4. 위의 주석 부분을 다음과 같이 채워넣습니다.

CCMenuItem *start = [CCMenuItemFont 어쩌구 저쩌구];      // 사이즈는 실행해가면서 원하는 크기로,.
// 글자체는 제가 선호하는건 Verdana -_-ㅋ;
CCMenuItem *help = [CCMenuItemFont 어쩌구 저쩌구];      // 위와 동일하게~
// CCMenuItemFont 는 클래스 메서드이기 때문에 릴리즈 책임이 없습니다.
CCMenu *menu = [CCMenu menuWithItems:start, help, nil]; // 배열 형식이기 때문에 마지막은 nil!

[menu alignItemsVertically];   // 메뉴를 세로로 정렬
                                           // 메뉴 사이에 간격을 두려면 [menu alignItemsVerticallyWithPadding:3]; 처럼 하시면 됩니다.
[self addChild:menu];           // 끝으로 자신의 노드에 붙입니다. 이 작업이 없으면 생성만 하고 안쓴 꼴

5. 끝으로 실행시키면 뭐 잘 동작하리라 봅니다.

위의 경우는 텍스트를 사용한 경우인데요, 본인이 이미지를 만들어서 할 경우에는
CCMenuItem 대신에
CCMenuItemImage 를 사용하면 됩니다.
물론 생성 메서드 또한 달라지긴 합니다만, 오토 컴플리션을 이용해서 손쉽게 해ㅋ결ㅋ
또한 앞선 예에서는 메뉴 클릭시 자동으로 확대 효과가 있습니다만 CCMenuItemImage에서는
두 개의 이미지가 필요합니다. 이미지 같은 경우 크기 효과보다는 다른 이미지가 낫겠죠?
(포지션이나 앞 뒤 순서 문제 등이 발생할 수 있기 때문에..)

위의 번호가 매겨진 내용들은 텍스트 기준으로 손쉽게 만드는 경우이구요,
이미지로 된 메뉴의 경우 공식 프로그래밍가이드에 나와있습니다.
http://www.cocos2d-iphone.org/wiki/doku.php/prog_guide:lesson_3._menus_and_scenes
참고하세요~

'iOS > Cocos2d Tutorials' 카테고리의 다른 글

cocos2d 자꾸 깜박하는 것들;  (0) 2010.11.23
cocos2d SimpleAudioEngine  (0) 2010.11.03
cocos2d 0.99.4 -> 0.99.5 beta3 로 버전 변경  (0) 2010.10.22
Hello World  (0) 2010.09.17
cocos2d setup guide  (0) 2010.09.01
Posted by 독뽀
,

최근 cocos2d 0.99.5 beta3 를 죽~ 훑어보니 레티나 디스플레이 지원과
여러 자잘한 클래스 변화가 있었습니다.
iOS 4.1 이상에서만 동작하기 때문에 Xcode 3.2.4 업그레이드 필수입니다.
특히 CCTouchDispatcher 요놈이 말썽인데.. 어떻게 해결할지 고민입니다..
제대로 임포트 되지 않고(Availability.h 문제인듯) 골치 썪는 중..

자잘한 문제들 해결 할 때까지 cocos2d 포스팅은 멈출듯.. (몇 개나 올렸다고.. ㅈㅅ;;)

해결.. 내가 생성한 .h 파일에 cocos2d.h 외에 <UIKit/UIKit.h> 임포트 하니 잘 된다 -_-
하지만 오토 컴플리션은 안된다 -_-.. 왜지???? 도대체 왜....

(추가)
태그를 달아놓고 필수로 구현해야되는 메서드도 안적어놔서 죄송합니다.

프로토콜 관련 내용 검색하시면 여러 정보들 나오는데요,
필수로 오버라이딩 해야되는 메서드가 있습니다. (안하면 빈 내용이라 에러)
그 외엔 선택적 요소들이기 때문에 해도 되고 안해도 됩니다.

필수 메서드는 - (BOOL)ccTouchBegan:(UITouch)touch ... 입니다.
터치를 뗄 때 반응하게 하고 싶으면 - (void)ccTouchEdned:(UITouch)touch.. 에 구현하면 되구요,
began의 return 값은 YES만 적어주면 됩니다. (구현 해야되므로)

그 외의 @optional 메서드는 - (void)ccTouchMoved:(UITouch)touch... 등이 있습니다.

CCTouchDispatcher 또한 CCDirector처럼 싱글톤 객체이기 때문에 클래스 메서드를 제공합니다.
따라서 CCDirector 처럼 (CCDirector:sharedDirector | CCTouchDispatcher:sharedDispatcher) 공용 디스패처를 사용면 됩니다.

터치를 사용할 레이어의 init 메서드 첫 줄에 아래와 같이 하면 터치에 반응하게 됩니다.
self.isTouchEnabled = YES;

터치를 사용할 메서드에는 아래와 같이 적어줍니다. (init 내부나 다른 곳에서나 싱글톤의 클래스 메서드라 상관 없습니다.)
[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self ...];

지금 윈도우라서 Xcode 의 오토컴플리션을 사용할 수 없기 때문에 ... 으로 적어뒀습니다 양해부탁;

그럼 화이팅!

───────────────────────────────────────────────────────

같은 고민에 빠진 양키들 ㅋㅋㅋㅋㅋㅋㅋ
http://www.cocos2d-iphone.org/forum/topic/9773

'iOS > Cocos2d Tutorials' 카테고리의 다른 글

cocos2d SimpleAudioEngine  (0) 2010.11.03
메뉴 화면 만들기~!  (0) 2010.10.24
Hello World  (0) 2010.09.17
cocos2d setup guide  (0) 2010.09.01
Tutorials 포스팅 예정..  (0) 2010.08.31
Posted by 독뽀
,