2011-07-12 100 views
0

我正在为项目制作一个小动画类型的应用程序。我有一个空间可以在imageView上绘制图像。然后,当你点击新页面按钮时,我需要该图像视图中的图像移动到另一个时间轴上的图像视图。希望你了解我的问题,如果不让我知道你需要什么其他信息。设置一个UIimage视图等于另一个UIimage视图

+0

所以无论是imageviews都在同样的看法,对不对? – Ilanchezhian

回答

1

hai检查此代码这将允许您绘制任何图像,然后您可以使用方法getimage以nsdata格式访问您的图像。然后就可以将它转换成图像从NSData的

.h File 
// 
// SignatureCaptureImageView.h 
// TEST_DRAW_APP 
// 

1. List item 

// Created by Talat Masud on 8/23/10. 
// Copyright 2010 __MyCompanyName__. All rights reserved. 
// 

#import <UIKit/UIKit.h> 


@interface SignatureCaptureImageView : UIImageView { 

    CGPoint lastPoint; 

    BOOL mouseSwiped; 
    int mouseMoved; 
} 
-(NSData *)getImage; 

@end 


Implementation File 


#import "SignatureCaptureImageView.h" 


@implementation SignatureCaptureImageView 


- (id)initWithFrame:(CGRect)frame { 
    if ((self = [super initWithFrame:frame])) { 
     // Initialization code 
     self.userInteractionEnabled = YES; 
     mouseMoved = 0; 
    } 
    return self; 
} 

- (id)initWithImage:(UIImage*)image { 
    if ((self = [super initWithImage:image])) { 
     // Initialization code 
     self.userInteractionEnabled = YES; 
     mouseMoved = 0; 
    } 
    return self; 
} 

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 

    mouseSwiped = NO; 
    UITouch *touch = [touches anyObject]; 

    if ([touch tapCount] == 2) 
    { 
     //self.image = nil; 
     return; 
    } 

    lastPoint = [touch locationInView:self]; 
    lastPoint.y -= 5; 

} 


- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    mouseSwiped = YES; 

    UITouch *touch = [touches anyObject]; 
    CGPoint currentPoint = [touch locationInView:self]; 
    currentPoint.y -= 5; 


    UIGraphicsBeginImageContext(self.frame.size); 
    [self.image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; 
    CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound); 
    CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 5.0); 
    CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 1.0, 0.0, 0.0, 1.0); 
    CGContextBeginPath(UIGraphicsGetCurrentContext()); 
    CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y); 
    CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), currentPoint.x, currentPoint.y); 
    CGContextStrokePath(UIGraphicsGetCurrentContext()); 
    self.image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    lastPoint = currentPoint; 

    mouseMoved++; 

    if (mouseMoved == 10) { 
     mouseMoved = 0; 
    } 

} 

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 

    UITouch *touch = [touches anyObject]; 

    if ([touch tapCount] == 2) { 
     //self.image = nil; 
     return; 
    } 


    if(!mouseSwiped) { 
     UIGraphicsBeginImageContext(self.frame.size); 
     [self.image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; 
     CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound); 
     CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 5.0); 
     CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 1.0, 0.0, 0.0, 1.0); 
     CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y); 
     CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y); 
     CGContextStrokePath(UIGraphicsGetCurrentContext()); 
     CGContextFlush(UIGraphicsGetCurrentContext()); 
     self.image = UIGraphicsGetImageFromCurrentImageContext(); 
     UIGraphicsEndImageContext(); 
    } 
} 

-(NSData *)getImage{ 
    return UIImagePNGRepresentation(self.image); 
} 

- (void)dealloc { 
    [super dealloc]; 
} 


@end 
0

声明2周的UIImageViews,先用图像和第二无任何图像,即,空的UIImageView,但具有原点和大小。

然后,当u想动画,请执行下列操作,

[UIView animateWithDuration:3.0 
       animations:^{ 
        CGRect sframe = mSecondImgView.frame; 
        mFirstImgView.frame = sframe; 
       } 
       completion:^(BOOL finished){ 

       }]; 
相关问题