iPhone 开发中如何将制作图片放大缩小代码实现案例
2012-04-16 10:13
781 查看
原文摘自:http://mobile.51cto.com/iphone-285108.htm
iPhone开发中如何将制作图片放大缩小案例是本文要介绍的内容,主要是来学习iphone开发中动画的制作,具体内容一起来看本文详解。在IPhone SDK开发范例大全中,有很多的范例码。
下面这段范例码,示范了两张图片的交换,以及放大缩小的动画
动画效果请参照下图
iPhone开发中如何将制作图片放大缩小案例是本文要介绍的内容,主要是来学习iphone开发中动画的制作,具体内容一起来看本文详解。在IPhone SDK开发范例大全中,有很多的范例码。
下面这段范例码,示范了两张图片的交换,以及放大缩小的动画
动画效果请参照下图
#import <UIKit/UIKit.h> #define IMAGE_VIEW_1 100 #define IMAGE_VIEW_2 101 #define BIGRECT CGRectMake(0.0f, 0.0f, 320.0f, 435.0f) #define SMALLRECT CGRectMake(130.0f, 187.0f, 60.0f, 60.0f) @interface ToggleView: UIView { BOOL isOne; } @end @implementation ToggleView - (id) initWithFrame: (CGRect) aFrame; { self = [super initWithFrame:aFrame]; // Load both views, make them non-interactive UIImageView *imgView1 = [[UIImageView alloc] initWithFrame:BIGRECT]; imgView1.image = [UIImage imageNamed:@"one.png"]; imgView1.userInteractionEnabled = NO; imgView1.tag = IMAGE_VIEW_1; UIImageView *imgView2 = [[UIImageView alloc] initWithFrame:SMALLRECT]; imgView2.image = [UIImage imageNamed:@"two.png"]; imgView2.userInteractionEnabled = NO; imgView2.tag = IMAGE_VIEW_2; // image 1 is in front of image 2 to begin [self addSubview:imgView2]; [self addSubview:imgView1]; isOne = YES; [imgView1 release]; [imgView2 release]; return self; } - (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event { // Determine which view occupies which role UIImageView *big = (UIImageView *)[self viewWithTag: (isOne ? IMAGE_VIEW_1 : IMAGE_VIEW_2)]; UIImageView *little = (UIImageView *)[self viewWithTag: (isOne ? IMAGE_VIEW_2 : IMAGE_VIEW_1)]; isOne = !isOne; // Pack all the changes into the animation block CGContextRef context = UIGraphicsGetCurrentContext(); [UIView beginAnimations:nil context:context]; [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; [UIView setAnimationDuration:1.0]; [big setFrame:SMALLRECT]; [big setAlpha:0.5]; [little setFrame:BIGRECT]; [little setAlpha:1.0]; [UIView commitAnimations]; // Hide the shrunken "big" image. [big setAlpha:0.0f]; [[big superview] bringSubviewToFront:big]; } @end @interface HelloController : UIViewController @end @implementation HelloController - (void)loadView { ToggleView *contentView = [[ToggleView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]]; contentView.backgroundColor = [UIColor whiteColor]; self.view = contentView; [contentView release]; } @end @interface SampleAppDelegate : NSObject <UIApplicationDelegate> @end @implementation SampleAppDelegate - (void)applicationDidFinishLaunching:(UIApplication *)application { UIWindow *window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; HelloController *hello = [[HelloController alloc] init]; [window addSubview:hello.view]; [window makeKeyAndVisible]; } @end int main(int argc, char *argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; int retVal = UIApplicationMain(argc, argv, nil, @"SampleAppDelegate"); [pool release]; return retVal; } #import <UIKit/UIKit.h> #define IMAGE_VIEW_1 100 #define IMAGE_VIEW_2 101 #define BIGRECT CGRectMake(0.0f, 0.0f, 320.0f, 435.0f) #define SMALLRECT CGRectMake(130.0f, 187.0f, 60.0f, 60.0f) @interface ToggleView: UIView { BOOL isOne; } @end @implementation ToggleView - (id) initWithFrame: (CGRect) aFrame; { self = [super initWithFrame:aFrame]; // Load both views, make them non-interactive UIImageView *imgView1 = [[UIImageView alloc] initWithFrame:BIGRECT]; imgView1.image = [UIImage imageNamed:@"one.png"]; imgView1.userInteractionEnabled = NO; imgView1.tag = IMAGE_VIEW_1; UIImageView *imgView2 = [[UIImageView alloc] initWithFrame:SMALLRECT]; imgView2.image = [UIImage imageNamed:@"two.png"]; imgView2.userInteractionEnabled = NO; imgView2.tag = IMAGE_VIEW_2; // image 1 is in front of image 2 to begin [self addSubview:imgView2]; [self addSubview:imgView1]; isOne = YES; [imgView1 release]; [imgView2 release]; return self; } - (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event { // Determine which view occupies which role UIImageView *big = (UIImageView *)[self viewWithTag: (isOne ? IMAGE_VIEW_1 : IMAGE_VIEW_2)]; UIImageView *little = (UIImageView *)[self viewWithTag: (isOne ? IMAGE_VIEW_2 : IMAGE_VIEW_1)]; isOne = !isOne; // Pack all the changes into the animation block CGContextRef context = UIGraphicsGetCurrentContext(); [UIView beginAnimations:nil context:context]; [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; [UIView setAnimationDuration:1.0]; [big setFrame:SMALLRECT]; [big setAlpha:0.5]; [little setFrame:BIGRECT]; [little setAlpha:1.0]; [UIView commitAnimations]; // Hide the shrunken "big" image. [big setAlpha:0.0f]; [[big superview] bringSubviewToFront:big]; } @end @interface HelloController : UIViewController @end @implementation HelloController - (void)loadView { ToggleView *contentView = [[ToggleView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]]; contentView.backgroundColor = [UIColor whiteColor]; self.view = contentView; [contentView release]; } @end @interface SampleAppDelegate : NSObject <UIApplicationDelegate> @end @implementation SampleAppDelegate - (void)applicationDidFinishLaunching:(UIApplication *)application { UIWindow *window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; HelloController *hello = [[HelloController alloc] init]; [window addSubview:hello.view]; [window makeKeyAndVisible]; } @end int main(int argc, char *argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; int retVal = UIApplicationMain(argc, argv, nil, @"SampleAppDelegate"); [pool release]; return retVal; }最重要的动画代码
- (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event { // 這一段代碼,設定目前哪一張圖是大圖,哪一張是小圖 UIImageView *big = (UIImageView *)[self viewWithTag: (isOne ? IMAGE_VIEW_1 : IMAGE_VIEW_2)]; UIImageView *little = (UIImageView *)[self viewWithTag: (isOne ? IMAGE_VIEW_2 : IMAGE_VIEW_1)]; isOne = !isOne; // 這是使用動畫的一些基本設定 CGContextRef context = UIGraphicsGetCurrentContext(); [UIView beginAnimations:nil context:context]; [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; // 設定為IN OUT的動畫 [UIView setAnimationDuration:1.0]; // 動畫時間為一秒 [big setFrame:SMALLRECT]; [big setAlpha:0.5]; [little setFrame:BIGRECT]; [little setAlpha:1.0]; [UIView commitAnimations]; // Hide the shrunken "big" image. [big setAlpha:0.0f]; [[big superview] bringSubviewToFront:big]; } @end - (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event { // 這一段代碼,設定目前哪一張圖是大圖,哪一張是小圖 UIImageView *big = (UIImageView *)[self viewWithTag: (isOne ? IMAGE_VIEW_1 : IMAGE_VIEW_2)]; UIImageView *little = (UIImageView *)[self viewWithTag: (isOne ? IMAGE_VIEW_2 : IMAGE_VIEW_1)]; isOne = !isOne; // 這是使用動畫的一些基本設定 CGContextRef context = UIGraphicsGetCurrentContext(); [UIView beginAnimations:nil context:context]; [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; // 設定為IN OUT的動畫 [UIView setAnimationDuration:1.0]; // 動畫時間為一秒 [big setFrame:SMALLRECT]; [big setAlpha:0.5]; [little setFrame:BIGRECT]; [little setAlpha:1.0]; [UIView commitAnimations]; // Hide the shrunken "big" image. [big setAlpha:0.0f]; [[big superview] bringSubviewToFront:big]; } @end
相关文章推荐
- iphone iPhone开发中如何将制作图片放大缩小代码实现案例
- [IPhone] 如何将制作图片放大缩小的动作
- [IPhone] 如何将制作图片放大缩小的动作
- JS实现控制图片放大缩小代码
- 通过Java代码实现图片的放大和缩小
- iPhone开发--改变图片的尺寸,放大或缩小
- Android开发--Matrix(一)--实现图片的动态放大缩小
- Android开发--Matrix(一)--实现图片的动态放大缩小
- iOS开发——手势识别器(用手势实现图片旋转和缩小放大)
- JS实现鼠标滚轮缩小放大拖动图片代码
- javascript 图片放大缩小功能实现代码
- [jQuery]地图浏览:如何实现图片的放大缩小和点击之后的位置居中
- iPhone 上图片放大缩小的代码例子
- [jQuery]地图浏览:如何实现图片的放大缩小和点击之后的位置居中
- iphone开发 图片、PDF 双击放大 实现
- iPhone开发之UIScrollView滚动组件的使用(七)利用NSTimer计时器和UIPageControl组件代码实现图片轮播器
- js实现用滚动条来放大缩小图片的代码
- 通过Java代码实现图片的放大和缩小