IOS: перетащите uiimageview только в одном направлении - PullRequest
0 голосов
/ 01 марта 2012

Я хочу перетащить изображение uiimage только по горизонтали из точки1 в точку2;как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 01 марта 2012

вы можете использовать somting так:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
      touchStart = [[touches anyObject] locationInView:/*your main view*/];
        point1 = CGPointMake(140, 140);
        oldrect = imgview.rect;

}

    - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
      CGPoint point = [[touches anyObject] locationInView:/*your main view*/];
      imgview.center = CGPointMake(imgview.center.x + point.x - touchStart.x, imgview.center.y);
    }

    -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
        CGPoint point = [[touches anyObject] locationInView:/*your main view*/];

    [UIView animateWithDuration:0.25
                         animations:^{

    if (((point1.x -15) > point.x) && ((point1.x + 15 ) < point.x) {
            Imgview.rect = CGRectMake(point.x, point.x, imgview.frame.size.width,imgview.frame.size.height);
        }
    else {Imgview.rect = oldrect;}
                         completion:^(BOOL finished){ }];}  }
0 голосов
/ 01 марта 2012

Простой, проверьте ваше изображение в положении x и ваше положение x в касании

float lastX = myimageview.center.x;

если точка касания x больше, чем lastX (или меньше, зависитв нужном вам направлении) {// Делать движение} else {// Ничего не делать}

Ваш код должен выглядеть примерно так:

- (void) touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event {
    // Move relative to the original touch point
    CGPoint pt = [[touches anyObject] locationInView:self];
    float lastX = myimageview.center.x;
    if (pt.x > lastX){
       // move myimageview.x to pt.x
    }
}
...