2012-07-19 127 views
0

我執行使用的UIImageView縮放,旋轉,在我的項目, 我現在面臨的問題在放大和旋轉圖像後縮小,的UIImageView旋轉和縮放在iPhone SDK

這裏是我的代碼如下:

在.h文件中

@interface ViewController : UIViewController{ 
float degrees; 
float height; 
float width; 

float moveLeft; 
float moveRight; 
} 

@property(nonatomic,retain)UIImageView *imageView; 

-(IBAction)rotationLeft:(id)sender; 
-(IBAction)rotationRight:(id)sender; 
-(IBAction)zoomIn:(id)sender; 
-(IBAction)zoomOut:(id)sender; 

-(IBAction)moveLeft:(id)sender; 
-(IBAction)moveRight:(id)sender; 

在.m文件

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 



height=50; 
width=50; 
degrees=20; 
moveLeft=20; 
moveRight=20; 
imageView=[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"1.png"]]; 
imageView.frame=CGRectMake(100, 100,width, height); 
[self.view addSubview:imageView]; 



// Do any additional setup after loading the view, typically from a nib. 
} 
-(IBAction)rotationLeft:(id)sender{ 
//the value in degrees 
imageView.transform = CGAffineTransformMakeRotation(degrees*M_PI/180); 
degrees=degrees+25; 
} 

-(IBAction)rotationRight:(id)sender{ 
//the value in degrees 
degrees=degrees-25; 
imageView.transform = CGAffineTransformMakeRotation(degrees*M_PI/180); 

} 
-(IBAction)zoomIn:(id)sender{ 
height=height-15; 
width=width-15; 
imageView.frame=CGRectMake(100, 100,width, height); 
} 
-(IBAction)zoomOut:(id)sender{ 
height=height+15; 
width=width+15; 
imageView.frame=CGRectMake(100, 100,width, height); 
} 

請參閱附件圖片以供參考。 enter image description here

+0

它的縮放與否? – Hiren 2012-07-19 10:53:55

+0

其縮放但圖像像給定的參考圖像一樣伸展。 – VSN 2012-07-19 11:01:09

回答

1

下面的代碼爲我工作完美!

-(IBAction)rotationLeft:(id)sender{ 
//the value in degrees 
    degrees=degrees+25; 
    CGAffineTransform t; 
    t=CGAffineTransformMakeScale(x, x); 
    // imageView.transform = CGAffineTransformMakeRotation(degrees*M_PI/180,x,x); 
    imageView.transform=CGAffineTransformRotate(t, degrees*M_PI/180); 
} 

-(IBAction)rotationRight:(id)sender{ 
    degrees=degrees-25; 
    CGAffineTransform t; 
    t=CGAffineTransformMakeScale(x, x); 
    imageView.transform=CGAffineTransformRotate(t, degrees*M_PI/180); 

} 
-(IBAction)zoomIn:(id)sender{ 
    x += 0.3; 
    CGAffineTransform t; 
    t=CGAffineTransformMakeRotation(degrees*M_PI/180); 
    imageView.transform=CGAffineTransformScale(t, x, x); 
} 

-(IBAction)zoomOut:(id)sender{ 
    x -= 0.3; 
    CGAffineTransform t; 
    t=CGAffineTransformMakeRotation(degrees*M_PI/180); 
    imageView.transform=CGAffineTransformScale(t, x, x); 
} 
1

你應該使用CGAffineTransformMakeScale進行縮放的目的,而不是強迫的框架。

定義某處全球foal x = 1;則:

-(IBAction)zoomIn:(id)sender{ 
    x += 0.3; 
    imageView.transform = CGAffineTransformMakeScale(x, x); 
} 

-(IBAction)zoomOut:(id)sender{ 
    x -= 0.3; 
    imageView.transform = CGAffineTransformMakeScale(x, x); 
} 
+0

然後稍微用這個「0.3」值來獲得想要的縮放因子。 – 2012-07-19 11:09:29

+0

Teodor,它應該是工作縮放,同時旋轉圖像...這裏是場景...如果我點擊縮放和縮小方法其工作正常...一段時間後,當我調用旋轉功能,圖像位置即將到來到正常而不是旋轉位置。 – VSN 2012-07-19 11:34:32

+0

也許你重置某個地方的「度」值。確保它沒有被重置,並且確保它始終保持在0到360之間(例如,如果度數大於360,那麼度數= 0,反之如果它小於零,則度數= 360) – 2012-07-19 12:45:58

1

我會建議使用一個非常類似的方法,你有旋轉碼縮放圖像:

CGAffineTransformMakeScale(CGFloat sx, CGFloat sy); 

只需把它超過1.0按比例放大並小於1.0以縮小比例;