Я хотел бы сделать 2 операции для UIImageView
масштабирования, поворота, у меня 2 проблемы:
A . Я делаю операцию для увеличения масштаба, например и когда я пытаюсь сделать вращение,
UIImageView
установлен в исходный размер, я хотел бы знать, как сохранить увеличенныйUIImageView
и сделать поворот из увеличенного изображения.Б. Я хотел бы объединить операцию масштабирования с вращением, и я не знаю, как реализовать это:
- (void)viewDidLoad
{
foo = [[UIImageView alloc]initWithFrame:CGRectMake(100.0, 100.0, 600, 800.0)];
foo.userInteractionEnabled = YES;
foo.multipleTouchEnabled = YES;
foo.image = [UIImage imageNamed:@"earth.jpg"];
foo.contentMode = UIViewContentModeScaleAspectFit;
foo.clipsToBounds = YES;
[self.view addSubview:foo];
}
//---pinch gesture---
UIPinchGestureRecognizer *pinchGesture =
[[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handlePinchGesture:)];
[foo addGestureRecognizer:pinchGesture];
[pinchGesture release];
//---rotate gesture---
UIRotationGestureRecognizer *rotateGesture =
[[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(handleRotateGesture:)];
[foo addGestureRecognizer:rotateGesture];
[rotateGesture release];
//---handle pinch gesture---
-(IBAction) handlePinchGesture:(UIGestureRecognizer *) sender {
NSLog(@"Pinch");
CGFloat factor = [(UIPinchGestureRecognizer *) sender scale];
if (factor > 1) {
//---zooming in---
sender.view.transform = CGAffineTransformMakeScale(
lastScaleFactor + (factor-1),
lastScaleFactor + (factor-1));
}
else {
//---zooming out---
sender.view.transform = CGAffineTransformMakeScale(lastScaleFactor * factor, lastScaleFactor * factor);
}
if (sender.state == UIGestureRecognizerStateEnded) {
if (factor > 1) {
lastScaleFactor += (factor-1);
} else {
lastScaleFactor *= factor;
}
}
}
//---handle rotate gesture---
-(IBAction) handleRotateGesture:(UIGestureRecognizer *) sender {
CGFloat rotation = [(UIRotationGestureRecognizer *) sender rotation];
CGAffineTransform transform = CGAffineTransformMakeRotation(rotation + netRotation);
sender.view.transform = transform;
if (sender.state == UIGestureRecognizerStateEnded) {
netRotation += rotation;
}
}
Спасибо
Я нашел кое-что, что может вас заинтересовать на сайте Стэнфордского университета:
http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
на этом сайте вам нужно прокрутить вниз, пока не увидите цифру 14: "Title: Лекция #14 - MultiTouch"
Скачать: "14_MultiTouchDemo.zip"
В этом примере вы можете масштабировать и вращать каждое изображение одновременно.
надеюсь, я помог :)