繁体   English   中英

如何在指定的UIview iPhone中移动图像

[英]how to move image in specified UIview iphone

UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(move:)];
    [panRecognizer setMinimumNumberOfTouches:1];
    [panRecognizer setMaximumNumberOfTouches:1];
    [panRecognizer setDelegate:self];
    [templatePhotoPlaceholderView addGestureRecognizer:panRecognizer];

 -(void)move:(UIPanGestureRecognizer *)gestureRecognizer{

        CGPoint translatedPoint = [gestureRecognizer translationInView:imageview];
        CGPoint center;
        if([gestureRecognizer state] == UIGestureRecognizerStateBegan) {
            _firstX = [imageview center].x;
            _firstY = [imageview center].y;

            if(center.x < templatePhotoPlaceholderView.frame.origin.x + (imageview.frame.size.width/2)){
                center.x = templatePhotoPlaceholderView.frame.origin.x+(imageview.frame.size.width/2);
            } 
            if(center.x > templatePhotoPlaceholderView.frame.origin.x+templatePhotoPlaceholderView.frame.size.width - (imageview.frame.size.width/2)){
                center.x = templatePhotoPlaceholderView.frame.origin.x+templatePhotoPlaceholderView.frame.size.width - (imageview.frame.size.width/2);
            }
            if(center.y < templatePhotoPlaceholderView.frame.origin.y + (imageview.frame.size.height/2)){
                center.y = templatePhotoPlaceholderView.frame.origin.y + (imageview.frame.size.height/2);
            }
            if(center.y > templatePhotoPlaceholderView.frame.origin.y + templatePhotoPlaceholderView.frame.size.height -(imageview.frame.size.height/2)){
                center.y = templatePhotoPlaceholderView.frame.origin.y + (templatePhotoPlaceholderView.frame.size.height)-(imageview.frame.size.height/2); 
            }
        }
        translatedPoint = CGPointMake(center.x+translatedPoint.x, center.y+translatedPoint.y);
        [imageview setCenter:translatedPoint];  
    }

如何在指定视图中移动图像[templatePhotoPlaceholderView is a view imageview is an UIImageView]

当图像被触摸到UIView的所有角的边缘时,图像就不需要移动。

不允许图像超出UIView的一侧。

我尝试但无法修复要移动的指定区域中的图像视图。

@抱歉,如果输入时出现语法错误。

@all请告诉我如何解决这个问题。

//缩放

    UIPinchGestureRecognizer *pinchRecognizer = [[[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(scale:)] autorelease];
    [pinchRecognizer setDelegate:self];
    [templatePhotoPlaceholderView addGestureRecognizer:pinchRecognizer];
    [self.view addSubview:templatePhotoPlaceholderView];
    [tapRecognizer release];

- (void)scale:(UIPinchGestureRecognizer *)gestureRecognizer
{

    [self adjustAnchorPointForGestureRecognizer:gestureRecognizer];
    if ([gestureRecognizer state] == UIGestureRecognizerStateBegan || [gestureRecognizer state] == UIGestureRecognizerStateChanged) { 


        float hfactor = imageview.frame.size.width / templatePhotoPlaceholderView.frame.size.width;
        float vfactor = imageview.frame.size.height / templatePhotoPlaceholderView.frame.size.height;
        float factor = MAX(hfactor, vfactor);
        if (([gestureRecognizer scale] > 1 && factor < 3) || ([gestureRecognizer scale] <= 1 && factor >1) ) {
        imageview.transform = CGAffineTransformScale([imageview transform], [gestureRecognizer scale], [gestureRecognizer scale]);
      } 
        [gestureRecognizer setScale:1];
    }
}

如果您不缩放图像或视图,则非常简单。

尝试这种方式:

-(void)move:(UIPanGestureRecognizer *)gestureRecognizer{

        CGPoint translatedPoint = [gestureRecognizer translationInView:imageview];
        CGPoint center;
        if([gestureRecognizer state] == UIGestureRecognizerStateBegan) {
            _firstX = [imageview center].x;
            _firstY = [imageview center].y;
//checking for x axis
if((self.view.frame.origin.x + 2 > _firstX) && (imageVIew.frame.size.width+_fisrtX < 340))
  //perform move condition

//checking for Y axis
if(self.view.frame.origin.y+ 2 > _firstY) && (imageview.Frame.size.height + _firstY < 420)
//perform move condtion


    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM