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]
When the image is touches the edges of all corner of UIView then image need not to move.
Not to allow the image to go out side of the 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.
// 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
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.