Ios5 UIImageView在iPhone Sdk中旋转和缩放
我在项目中使用UIImageview实现缩放和旋转, 旋转图像后,我在放大和缩小时遇到问题 以下是我的代码: 在.h文件中Ios5 UIImageView在iPhone Sdk中旋转和缩放,ios5,uiimageview,quartz-2d,image-rotation,zooming,Ios5,Uiimageview,Quartz 2d,Image Rotation,Zooming,我在项目中使用UIImageview实现缩放和旋转, 旋转图像后,我在放大和缩小时遇到问题 以下是我的代码: 在.h文件中 @interface ViewController : UIViewController{ float degrees; float height; float width; float moveLeft; float moveRight; } @property(nonatomic,retain)UIImageView *imageView; -(IBActi
@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);
}
请查找附加的图像以供参考。您应该使用
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);
}
您应该使用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);
}
我建议使用与旋转代码非常相似的方法缩放图像:
CGAffineTransformMakeScale(CGFloat sx, CGFloat sy);
只需发送大于1.0的数据进行放大,发送小于1.0的数据进行缩小 我建议使用与旋转代码非常相似的方法缩放图像:
CGAffineTransformMakeScale(CGFloat sx, CGFloat sy);
只需发送大于1.0的数据进行放大,发送小于1.0的数据进行缩小 下面的代码非常适合我
-(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);
}
下面的代码为我工作完美
-(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);
}
它的缩放但图像像给定的参考图像一样拉伸。它的缩放但图像像给定的参考图像一样拉伸。并使用该“0.3”值播放一点,以获得所需的缩放因子。Teodor,它应该在旋转图像的同时进行缩放。。。下面是一个场景。。。如果我点击zoomin和zoomout方法,它的工作状态很好。。。当我调用旋转函数一段时间后,图像位置将恢复正常,而不是旋转位置。也许你在某个地方重置了“度”值。确保它没有被重置,并且确保它始终保持在零和360之间(比如如果度大于360,则度=零,反之亦然,如果度小于零,则度=360),并使用该“0.3”值播放一点以获得所需的缩放因子。Teodor,在旋转图像的同时也应进行缩放。。。下面是一个场景。。。如果我点击zoomin和zoomout方法,它的工作状态很好。。。当我调用旋转函数一段时间后,图像位置将恢复正常,而不是旋转位置。也许你在某个地方重置了“度”值。确保未重置,并且确保始终将其保持在零和360之间(例如,如果度数大于360,则度数=零,反之亦然,如果度数小于零,则度数=360)