[英]Animate UIImageView by Set Distance
我正在嘗試將圖像視圖向前移動一定距離,但似乎無法正常工作。 我的turnRight和turnLeft方法可以正常工作。 我只是對moveForward方法有問題。 這是我正在嘗試的:
- (IBAction)moveForward:(id)sender
{
if (turtle.image.imageOrientation == UIImageOrientationRight)
{
turtle.frame = CGRectMake(turtle.frame.origin.x + 10, turtle.frame.origin.y, 75, 75);
}
else if (turtle.image.imageOrientation == UIImageOrientationLeft)
{
turtle.frame = CGRectMake(turtle.frame.origin.x - 10, turtle.frame.origin.y, 75, 75);
}
else if (turtle.image.imageOrientation == UIImageOrientationUp)
{
turtle.frame = CGRectMake(turtle.frame.origin.x, turtle.frame.origin.y + 10, 75, 75);
}
else if (turtle.image.imageOrientation == UIImageOrientationDown)
{
turtle.frame = CGRectMake(turtle.frame.origin.x, turtle.frame.origin.y - 10, 75, 75);
}
}
- (IBAction)turnRight:(id)sender
{
UIImage *newImage;
switch (turtle.image.imageOrientation)
{
case UIImageOrientationUp:
newImage = [UIImage imageWithCGImage:[turtle.image CGImage] scale:1.0f orientation:UIImageOrientationRight];
turtle.contentMode = UIViewContentModeScaleAspectFit;
break;
case UIImageOrientationLeft:
newImage = [UIImage imageWithCGImage:[turtle.image CGImage]scale:1.0f orientation:UIImageOrientationUp];
turtle.contentMode = UIViewContentModeScaleAspectFill;
break;
case UIImageOrientationDown:
newImage = [UIImage imageWithCGImage:[turtle.image CGImage] scale:1.0f orientation:UIImageOrientationLeft];
turtle.contentMode = UIViewContentModeScaleAspectFit;
break;
case UIImageOrientationRight:
newImage = [UIImage imageWithCGImage:[turtle.image CGImage]scale:1.0f orientation:UIImageOrientationDown];
turtle.contentMode = UIViewContentModeScaleAspectFill;
break;
default:
break;
}
turtle.image = newImage;
}
- (IBAction)turnLeft:(id)sender
{
UIImage *newImage;
switch (turtle.image.imageOrientation)
{
case UIImageOrientationUp:
newImage = [UIImage imageWithCGImage:[turtle.image CGImage] scale:1.0f orientation:UIImageOrientationLeft];
turtle.contentMode = UIViewContentModeScaleAspectFit;
break;
case UIImageOrientationLeft:
newImage = [UIImage imageWithCGImage:[turtle.image CGImage]scale:1.0f orientation:UIImageOrientationDown];
turtle.contentMode = UIViewContentModeScaleAspectFill;
break;
case UIImageOrientationDown:
newImage = [UIImage imageWithCGImage:[turtle.image CGImage] scale:1.0f orientation:UIImageOrientationRight];
turtle.contentMode = UIViewContentModeScaleAspectFit;
break;
case UIImageOrientationRight:
newImage = [UIImage imageWithCGImage:[turtle.image CGImage]scale:1.0f orientation:UIImageOrientationUp];
turtle.contentMode = UIViewContentModeScaleAspectFill;
break;
default:
break;
}
turtle.image = newImage;
}
這里有兩件事要考慮。
1)確保在主線程上進行UI更改。
2)使用UIView的動畫方法
- (IBAction)moveForward:(id)sender
{
CGRect frame = turtle.frame;
switch (turtle.image.imageOrientation)
{
case UIImageOrientationUp:
frame.origin.y + 10;
break;
case UIImageOrientationLeft:
frame.origin.x - 10;
break;
case UIImageOrientationDown:
frame.origin.y + 10;
break;
case UIImageOrientationRight:
frame.origin.x + 10;
break;
default:
break;
}
[UIView animateWithDuration:1.0 // The duration in seconds for the animation to complete.
animations:^{
turtle.frame = frame;
}];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.