天天看點

ISO -touches 手勢移動限位

  • (void) touchesBegan:(NSSet )touches withEvent:(UIEvent )event

    {

    CGPoint point = [[touches anyObject] locationInView:self];

    self.startpoint =CGPointMake(self.imageView.center.x - point.x,self.imageView.center.y - point.y) ;

    }

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

{

CGPoint point = [[touches anyObject] locationInView:self];

float dx = point.x +self.startpoint.x;

float dy = point.y + self.startpoint.y;

CGPoint newcenter = CGPointMake( dx,dy);

if((newcenter.x >= (self.imageView.frame.size.width/2.0)) && (newcenter.x <= (self.frame.size.width -self.imageView.frame.size.width/2.0)) && (newcenter.y >= (self.imageView.frame.size.height/2.0)) && (newcenter.y <= (self.frame.size.height -self.imageView.frame.size.height/2.0)))

{

[self.imageView setCenter:newcenter];

}else

{

if((newcenter.x < (self.imageView.frame.size.width/2.0)))

{

newcenter.x= self.imageView.frame.size.width/2.0;

if(newcenter.y < self.imageView.frame.size.height/2.0)

{

newcenter.y = self.imageView.frame.size.height/2.0;

}else if(newcenter.y > self.frame.size.height -self.imageView.frame.size.height/2.0)

{

newcenter.y = self.frame.size.height -self.imageView.frame.size.height/2.0;

}

}else if(newcenter.x > self.frame.size.width -self.imageView.frame.size.width/2.0)

{

newcenter.x = self.frame.size.width -self.imageView.frame.size.width/2.0;

if(newcenter.y < self.imageView.frame.size.height/2.0)

{

newcenter.y = self.imageView.frame.size.height/2.0;

}else if(newcenter.y > self.frame.size.height -self.imageView.frame.size.height/2.0)

{

newcenter.y = self.frame.size.height -self.imageView.frame.size.height/2.0;

}

}else

{

if(newcenter.y < self.imageView.frame.size.height/2.0)

{

newcenter.y = self.imageView.frame.size.height/2.0;

}else if(newcenter.y > self.frame.size.height -self.imageView.frame.size.height/2.0)

{

newcenter.y = self.frame.size.height -self.imageView.frame.size.height/2.0;

}

}

[self.imageView setCenter:newcenter];

}

}

繼續閱讀