Перетащите изображение из прокрутки для просмотра без ущерба для его местоположения - PullRequest
0 голосов
/ 04 марта 2011

Как я могу убедиться, что изображения, которые находятся внутри моего скроллера, можно будет перетаскивать из скроллера в просмотр изображений?

Я также хотел бы реализовать «покачивание». Когда пользователь нажимает на изображение внутри скроллера, изображения покачиваются и следуют за касанием пользователя к другому виду. Я начал с создания подпредставления, однако, когда изображение отображается в обычном режиме, его местоположение меняется на вид сверху, а не внизу.

Как я могу убедиться, что при касании изображения:

  • изображение покачивается
  • изображения переходят в другой вид.
  • изображения соответствуют моему положению касания

(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [[event allTouches] anyObject];
    CGPoint location = [touch locationInView:self.view];

    image1.userInteractionEnabled = YES;
    [self.view addSubview:image1];

    if([touch view] == image1){

        image1.center = location;
        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration:0.14];
        [UIView setAnimationRepeatAutoreverses:YES];
        [UIView setAnimationRepeatCount:1000000];

        image1.transform = CGAffineTransformMakeRotation(69);
        image1.transform = CGAffineTransformMakeRotation(-69);

        [UIView commitAnimations];
        image1.center = CGPointMake(30,870);          
    }

-(void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *) event {

    UITouch *touch = [[event allTouches] anyObject];
    CGPoint location = [touch locationInView:self.view];

    if([touch view] == image1){
        image1.userInteractionEnabled = YES;
        [self.view addSubview:image1];
        image1.center = location;
        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration:0.14];
        [UIView setAnimationRepeatAutoreverses:YES];
        [UIView setAnimationRepeatCount:1000000];

        image1.transform = CGAffineTransformMakeRotation(69);
        image1.transform = CGAffineTransformMakeRotation(-69);

        [UIView commitAnimations];  
    }

1 Ответ

0 голосов
/ 02 ноября 2011

Вместо использования «функций касаний» я использовал gestRecognizer. Вы можете поставить распознаватель на определенное изображение (TapRecognizer LongpressRecognizer). Когда пользователь нажимает на изображение, приложение распознает касание. После слов вы можете поместить изображение в подпредставление поверх обычного представления с помощью функции "[self.view addSubview: yourImage];"

Вот фрагмент

Сначала вы объявляете распознаватель жестов в своих методах viewDidLoad, viewDidAppear или viewWillappear

UILongPressGestureRecognizer *longPress =
    [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressed:)];
    longPress.minimumPressDuration = 0.7;
    [yourimage addGestureRecognizer:longPress1];

После слов вы используете функцию делегата

-(void)longPressed:(UILongPressGestureRecognizer *)sender {

    CGPoint location = [sender locationInView:self.view];

    [self.view addSubview:yourimage];
    yourimage.center = location;
    //perform a transform (wiggle or scale)
    if([(UILongPressGestureRecognizer*)sender state] == UIGestureRecognizerStateEnded) {
        yourimage.transform = CGAffineTransformMakeScale(1.0, 1.0);
        //stop the transform

    }   
}

Надеюсь, это поможет тебе, Элппа

...