아이폰어플개발정보2010. 10. 12. 06:38
동적으로 새로운 뷰로딩
[super viewDidLoad];<---반드시 위에 위치..
self.s = [[Seat alloc] 
initWithNibName:@"Seat" bundle:[NSBundle mainBundle]];
UIView *v = s.view;
v.frame = CGRectMake(12.0, 3.0, 100.0, 250.0);
[self.view addSubview:v];
[self.view bringSubviewToFront:v];
}
Posted by 오늘마감

댓글을 달아 주세요

아이폰어플개발정보2010. 10. 12. 04:59
동적으로 이미지 동영상 에니메이션만들기

#import "ImagesViewController.h"

#import "Constants.h"


#define kMinDuration 0.0

#define kMaxDuration 10.0


@implementation ImagesViewController


@synthesize imageView, slider;


- (void)dealloc

{

[imageViewrelease];

[sliderrelease];

[superdealloc];

}


- (void)viewDidLoad

{

[superviewDidLoad];

self.title = NSLocalizedString(@"ImagesTitle", @"");

// set up our UIImage with a group or array of images to animate (or in our case a slideshow)

UIImage *im5 = [[UIImagealloc] initWithContentsOfFile:[[NSBundlemainBundle] pathForResource:@"scene1"ofType:@"jpg"]]; 

UIImage *im1=[[UIImagealloc] initWithContentsOfFile:[[NSBundlemainBundle] pathForResource:@"scene2"ofType:@"jpg"]];

UIImage *im2=[[UIImagealloc] initWithContentsOfFile:[[NSBundlemainBundle] pathForResource:@"scene3"ofType:@"jpg"]];

UIImage *im3=[[UIImagealloc] initWithContentsOfFile:[[NSBundlemainBundle] pathForResource:@"scene4"ofType:@"jpg"]];

UIImage *im4=[[UIImagealloc] initWithContentsOfFile:[[NSBundlemainBundle] pathForResource:@"scene5"ofType:@"jpg"]];

NSMutableArray *ma=[[NSMutableArrayalloc]init];

[ma addObject:im1];

[ma addObject:im2];

[ma addObject:im3];

[ma addObject:im4];

[ma addObject:im5];

NSArray *arry=ma;

self.imageView.animationImages =arry;

//정적으로 동영상 만드는 방식

//self.imageView.animationImages = [NSArray arrayWithObjects:

//[UIImage imageNamed:@"scene1.jpg"],

//[UIImage imageNamed:@"scene2.jpg"],

//[UIImage imageNamed:@"scene3.jpg"],

//[UIImage imageNamed:@"scene4.jpg"],

//[UIImage imageNamed:@"scene5.jpg"],

//  nil];

imageView.animationDuration = 5.0;

[self.imageViewstopAnimating];

// Set the appropriate accessibility labels.

[self.imageViewsetIsAccessibilityElement:YES];

[self.imageViewsetAccessibilityLabel:self.title];

[self.slidersetAccessibilityLabel:NSLocalizedString(@"DurationSlider",@"")];

}


// called after the view controller's view is released and set to nil.

// For example, a memory warning which causes the view to be purged. Not invoked as a result of -dealloc.

// So release any properties that are loaded in viewDidLoad or can be recreated lazily.

//

- (void)viewDidUnload

{

[superviewDidUnload];

self.imageView = nil;

self.slider = nil;

}


// slown down or speed up the slide show as the slider is moved

- (IBAction)sliderAction:(id)sender

{

UISlider* durationSlider = sender;

self.imageView.animationDuration = [durationSlider value];

if (!self.imageView.isAnimating)

[self.imageViewstartAnimating];

}



#pragma mark -

#pragma mark UIViewController delegate methods


// called after this controller's view was dismissed, covered or otherwise hidden

- (void)viewWillDisappear:(BOOL)animated

{

[self.imageViewstopAnimating];

// restore the nav bar and status bar color to default

self.navigationController.navigationBar.barStyle = UIBarStyleDefault;

[UIApplicationsharedApplication].statusBarStyle = UIStatusBarStyleDefault;

}


// called after this controller's view will appear

- (void)viewWillAppear:(BOOL)animated

{

[self.imageViewstartAnimating];

// for aesthetic reasons (the background is black), make the nav bar black for this particular page

self.navigationController.navigationBar.barStyle = UIBarStyleBlackOpaque;

// match the status bar with the nav bar

[UIApplicationsharedApplication].statusBarStyle = UIStatusBarStyleBlackOpaque;

}


@end

Posted by 오늘마감

댓글을 달아 주세요

아이폰어플개발정보2010. 9. 12. 21:19
아이폰 어플에 동적으로 이미지,동영상 만드는 방법 정리

#import "ImagesViewController.h"

#import "Constants.h"

#define kMinDuration 0.0

#define kMaxDuration 10.0

@implementation ImagesViewController

@synthesize imageView, slider;

- (void)dealloc

{

[imageViewrelease];

[sliderrelease];

[superdealloc];

}

- (void)viewDidLoad

{

[superviewDidLoad];

self.title = NSLocalizedString(@"ImagesTitle", @"");

// set up our UIImage with a group or array of images to animate (or in our case a slideshow)

UIImage *im5 = [[UIImagealloc] initWithContentsOfFile:[[NSBundlemainBundle] pathForResource:@"scene1"ofType:@"jpg"]]; 

UIImage *im1=[[UIImagealloc] initWithContentsOfFile:[[NSBundlemainBundle] pathForResource:@"scene2"ofType:@"jpg"]];

UIImage *im2=[[UIImagealloc] initWithContentsOfFile:[[NSBundlemainBundle] pathForResource:@"scene3"ofType:@"jpg"]];

UIImage *im3=[[UIImagealloc] initWithContentsOfFile:[[NSBundlemainBundle] pathForResource:@"scene4"ofType:@"jpg"]];

UIImage *im4=[[UIImagealloc] initWithContentsOfFile:[[NSBundlemainBundle] pathForResource:@"scene5"ofType:@"jpg"]];

NSMutableArray *ma=[[NSMutableArrayalloc]init];

[ma addObject:im1];

[ma addObject:im2];

[ma addObject:im3];

[ma addObject:im4];

[ma addObject:im5];

NSArray *arry=ma;

self.imageView.animationImages =arry;

//정적으로 동영상 만드는 방식

//self.imageView.animationImages = [NSArray arrayWithObjects:

//[UIImage imageNamed:@"scene1.jpg"],

//[UIImage imageNamed:@"scene2.jpg"],

//[UIImage imageNamed:@"scene3.jpg"],

//[UIImage imageNamed:@"scene4.jpg"],

//[UIImage imageNamed:@"scene5.jpg"],

//  nil];

imageView.animationDuration = 5.0;

[self.imageViewstopAnimating];

// Set the appropriate accessibility labels.

[self.imageViewsetIsAccessibilityElement:YES];

[self.imageViewsetAccessibilityLabel:self.title];

[self.slidersetAccessibilityLabel:NSLocalizedString(@"DurationSlider",@"")];

}

// called after the view controller's view is released and set to nil.

// For example, a memory warning which causes the view to be purged. Not invoked as a result of -dealloc.

// So release any properties that are loaded in viewDidLoad or can be recreated lazily.

//

- (void)viewDidUnload

{

[superviewDidUnload];

self.imageView = nil;

self.slider = nil;

}

// slown down or speed up the slide show as the slider is moved

- (IBAction)sliderAction:(id)sender

{

UISlider* durationSlider = sender;

self.imageView.animationDuration = [durationSlider value];

if (!self.imageView.isAnimating)

[self.imageViewstartAnimating];

}

#pragma mark -

#pragma mark UIViewController delegate methods

// called after this controller's view was dismissed, covered or otherwise hidden

- (void)viewWillDisappear:(BOOL)animated

{

[self.imageViewstopAnimating];

// restore the nav bar and status bar color to default

self.navigationController.navigationBar.barStyle = UIBarStyleDefault;

[UIApplicationsharedApplication].statusBarStyle = UIStatusBarStyleDefault;

}

// called after this controller's view will appear

- (void)viewWillAppear:(BOOL)animated

{

[self.imageViewstartAnimating];

// for aesthetic reasons (the background is black), make the nav bar black for this particular page

self.navigationController.navigationBar.barStyle = UIBarStyleBlackOpaque;

// match the status bar with the nav bar

[UIApplicationsharedApplication].statusBarStyle = UIStatusBarStyleBlackOpaque;

}

@end



출처 : http://blog.naver.com/PostList.nhn?blogId=philipousys¤tPage=14
Posted by 오늘마감

댓글을 달아 주세요

오브젝트C2010. 6. 21. 09:31
[Objective-C] 동적으로 메소드 호출하기

Objective-C 의 메소드 호출은 C언어로 정의된 함수 포인터를 호출하는 것과 같습니다.

typedef id (*IMP)(id, SEL, ...);

이 정의로부터도 알 수 있듯이, Objective-C에서 선언된 모든 암묵적으로 id 형태와 SEL 형태의 인수를 가집니다. 첫번째 인자는 메소드를 오브젝트를 나타내는 변수 self 입니다. 두번째 인자는 이 메소드의 selecotr를 변수 _cmd 입니다. 모든 메소드에는 이러한 숨겨진 인자가 반드시 존재합니다.


예를 들어서 사용자가 정의한 +(void) hello { NSLog(@"hello, World!!"); } 라는 메소드를 호출을 하게 되면 내부적으로 아래와 같이 호출이 됩니다.


func(self, @selector(hello));     // 여기서 func는 IMP 타입의 함수 포인터

그리고 사용자는 NSObject 클래스의 메소드인 instanceMethodForSelector를 통해서 IMP 타입의 함수 포인터를 얻을 수 있다.

(이 밖에도 여러 가지 메소드가 있음, 자세한 것은 API 참조..!!)


IMP func = [ClassName instanceMethodForSelector: @selector(hello)];

이렇게 얻은 IMP 값은 앞서 설명했던 것처럼 함수 형태로 호출이 가능하다.

첫 번째 매개변수는 호출한 메소드를 정의한 클래스 객체이고, 두 번째 매개변수는 해당 메소드의 셀렉터이다.


만약에 호출할 메소드가 매개변수를 포함하고 있다면, 아래 예제와 같이 해당 인자 값을 세 번째 매개변수로 입력하면 된다.


// 앞서 정의했던 hello 메소드가 아래와 같이 param 매개변수가 있을 경우,

// +(void) hello : (NSString *)param { NSLog(@"Hello, %@", param); }

// ...

func(self, @selector(hello:), @"Mr.Hong");

func함수는 세 번째 매개변수부터 가변적으로 입력할 수 있으므로, 셀렉터를 통해 얻은 메소드의 매개변수에 맞게 값을 입력하면 된다.
그리고 IMP 함수 포인터를 사용하지 않고, NSObject 클래스에 정의된 performSelector 메소드를 사용하면 바로 호출이 가능하다.

[self performSelector: @selector(Hello)];

performSelector 메소드는 IMP 함수 포인터를 사용하는 것과 달리 가변 인자를 지원하지 않음으로써 매개변수가 다수 일 경우에 제약이 따른다. 하지만 메소드 호출 지연 등 여러 옵션을 주어 보다 다양한 방법으로 사용할 수 있다.

[self performSelector: @selector(Hello) withObject:nil afterDelay:1.0f];
여기서 afterDelay는 해당 메소드를 호출하기까지 지연되는 시간(단위/초)이이며, withObject는 호출하는 메소드의 매개 변수 값이다.

iPhone 어플리케이션 개발을 하다 보면 델리게이트 메소드를 사용하는 경우가 많은데, 현재 동작하고 있는 델리게이트가 많을 경우에 메소드 호출 순서가 약간은 생각했던 것과 다를 수도 있다. 그런 경우에 performSelector를 사용하여 메소드 호출 시점을 조정할 수 있다.

이렇게 Objective-C에서는 동적으로 메소드를 호출할 수 있는 방법이 두 가지가 있다. 매개변수의 수가 많거나 타입이 Object가 아닐 경우에는 IMP 함수 포인터를 사용하면 되고, 메소드 호출의 지연 시간을 정하고 싶다면 performSelector 메소드를 사용하면 될 것이다.







출처 : http://blog.naver.com/PostView.nhn?blogId=seogi1004&logNo=110087574466

'오브젝트C' 카테고리의 다른 글

[펌] Delegate  (0) 2010.06.21
[펌] Key-Value Coding  (0) 2010.06.21
[Objective-C] 동적으로 메소드 호출하기  (0) 2010.06.21
[펌] 메소드의 포인터, IMP란?  (0) 2010.06.21
[펌] Objective-C 생성자  (0) 2010.06.21
[강좌] From C++ to Objective-C  (0) 2010.06.21
Posted by 오늘마감

댓글을 달아 주세요