UIImageView Жесты (увеличение, поворот) Вопрос

Я хотел бы сделать 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;
    }
}

Спасибо

24
задан WrightsCS 29 August 2011 в 00:44
поделиться

1 ответ

Я нашел кое-что, что может вас заинтересовать на сайте Стэнфордского университета:

http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter

на этом сайте вам нужно прокрутить вниз, пока не увидите цифру 14: "Title: Лекция #14 - MultiTouch"

Скачать: "14_MultiTouchDemo.zip"

В этом примере вы можете масштабировать и вращать каждое изображение одновременно.

надеюсь, я помог :)

15
ответ дан 28 November 2019 в 22:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: