简体   繁体   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];  
    }

how to move an image in a specified view [templatePhotoPlaceholderView is a view imageview is an UIImageView] 如何在指定视图中移动图像[templatePhotoPlaceholderView is a view imageview is an UIImageView]

When the image is touches the edges of all corner of UIView then image need not to move. 当图像被触摸到UIView的所有角的边缘时,图像就不需要移动。

Not to allow the image to go out side of the UIView. 不允许图像超出UIView的一侧。

i try but not able to fix the image view in specified region to be moved. 我尝试但无法修复要移动的指定区域中的图像视图。

@ sorry if any grammatical mistake in typing. @抱歉,如果输入时出现语法错误。

@all please advice me how to figure the issue. @all请告诉我如何解决这个问题。

// Scaling //缩放

    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];
    }
}

If you are not scaling the image or view then it's very simple. 如果您不缩放图像或视图,则非常简单。

try this way: 尝试这种方式:

-(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