我需要他的圖像尺寸touchBegan應該增加,如果他的移動也相同,但如果 在touchesended它需要成爲原始大小如何做到這一點。可以任何一個共享代碼要做到這一點..thanks在預先..如何在objective-c中動畫圖像?
回答
可以在方法的touchesBegan增加的ImageView的幀尺寸和比例在它顯示的圖像(通過使用scaleimage以適應)。 U可以在touchesEnded方法中將框架設置爲原始尺寸。通過這種方式,你可以達到你想要的動畫效果。希望這會有所幫助。
讓我們猜測,你的形象被實現爲UIImageView的,如果是的話,你可以使用簡單的轉換。
yourImage.transform = CGAffineTransformMakeScale(scale.x,scale.y);
規模(1.0 - 原始大小)
將此代碼放在您的touchesBegan
[UIView animateWithDuration:0.3 animations:^{
myImage.transform = CGAffineTransformMakeScale(1.5, 1.5);
}];
將此代碼放在您的touchesEnded
[UIView animateWithDuration:0.3 animations:^{
myImage.transform = CGAffineTransformMakeScale(1.0, 1.0);
}];
touchesCancelled的代碼應該與touchesEnded相同。另外,在這種情況下,基於塊的動畫對我來說效果不佳。用戶無法在動畫運行時移動視圖。 –
然後使用非塊方法或設置了UIViewAnimationOptionAllowUserInteraction選項。 – Dancreek
我猜你的子類的UIImageView - 如果你沒有不,你應該現在就做。 另外,請確保將圖像的.userInteractionEnabled設置爲YES!
接口:
@interface YourImageView : UIImageView
@property (nonatomic, assign) CGPoint originalCenter;
@property (nonatomic, assign) CGPoint touchLocation;
@end
Implamentation:
@implementation YourImageView
@synthesize originalCenter;
@synthesize touchLocation;
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[super touchesBegan:touches withEvent:event];
self.originalCenter = self.center;
self.touchLocation = [[touches anyObject] locationInView:self.superview];
self.transform = CGAffineTransformMakeScale(1.5, 1.5);
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
[super touchesMoved:touches withEvent:event];
CGPoint touch = [[touches anyObject] locationInView:self.superview];
CGFloat xDifference = (touch.x - self.touchLocation.x);
CGFloat yDifference = (touch.y - self.touchLocation.y);
CGPoint newCenter = self.originalCenter;
newCenter.x += xDifference;
newCenter.y += yDifference;
self.center = newCenter;
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
[super touchesEnded:touches withEvent:event];
self.originalCenter = CGPointZero;
self.touchLocation = CGPointZero;
self.transform = CGAffineTransformMakeScale(1.0, 1.0);
}
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
{
[super touchesCancelled:touches withEvent:event];
self.originalCenter = CGPointZero;
self.touchLocation = CGPointZero;
self.transform = CGAffineTransformMakeScale(1.0, 1.0);
}
@end
你可以,如果當然,翹曲self.transform =某物成動畫,使它看起來更好。 ;)
請注意,在這種情況下,您不應該使用基於塊的動畫(如Dancreek提出的),因爲在此動畫運行時用戶將無法移動圖像! –
塊動畫仍然可以正常工作,但您必須在選項中設置UIViewAnimationOptionAllowUserInteraction。 – Dancreek
酷,不知道! –
- 1. 如何動畫浮動UIView在ObjectiveC
- 2. 如何在TitleBar中動畫圖像?
- 3. 如何在Swift中動畫圖像?
- 4. 如何在android中動畫onDraw圖像?
- 5. 如何在android中動畫圖像?
- 6. ObjectiveC在tableview中保存圖像
- 7. 在InterfaceBuilder中加載圖像序列-ObjectiveC
- 8. 如何動畫PNG圖像
- 9. 在UIWebView中動畫圖像
- 10. 如何動畫中的UIImageView圖像
- 11. 如何在圖像上應用動畫?
- 12. 如何在畫布內移動圖像
- 13. 圖像動畫像
- 14. 動畫圖像
- 15. 動畫圖像
- 16. 在android中動畫位圖圖像
- 17. 在圖像視圖中創建動畫
- 18. 如何在RubyMotion中使圖像移動/動畫?
- 19. 如何在android中移動和動畫圖像?
- 20. 如何動畫圖像在框架中移動一圈?
- 21. 如何在iPhone中啓動和停止圖像動畫
- 22. 如何在動畫後從超級視圖中移除圖像
- 23. 如何在視圖背景中動畫圖像
- 24. 如何在畫布上設置圖像..?然後畫在圖像
- 25. 如何檢測圖像方向和歪斜在ObjectiveC
- 26. WPF中的圖像動畫
- 27. android中的圖像動畫
- 28. Win32中的動畫圖像
- 29. 動畫CSS3中的圖像
- 30. ImageView中的動畫圖像?
在這種情況下使用UIView的transform屬性更好。在您的解決方案中,您將不得不存儲原始幀,而使用變換時則不需要。 ;) –