0

プロジェクトで UIImageview を使用してズームと回転を実装していますが、画像を回転させた後にズームインとズームアウトの問題に直面しています。

これが私のコードです:

.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);
}

添付の画像を参考にしてください。ここに画像の説明を入力

4

3 に答える 3

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);
 }
于 2012-07-20T06:17:33.710 に答える
1

あなたが持っている回転コードと非常によく似た方法を使用して画像をスケーリングすることをお勧めします。

CGAffineTransformMakeScale(CGFloat sx, CGFloat sy);

スケールアップするには 1.0 より大きく、スケールダウンするには 1.0 より小さい値を送信します。

于 2012-07-19T11:06:18.997 に答える
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);
}
于 2012-07-19T11:05:04.777 に答える