我很快就开始使用Objective C和IOS开发,但是我还没有做过任何动画(没有动画:没有什么东西)。
我想了解如何开发类似于亚马逊Kindle应用程序中使用的页面转换的一些建议。在Kindle应用程序中阅读书籍时,向左或向右滑动“转动”页面。页面转向由当前页面向右或向左滑动指示,新页面从左侧或右侧进入。这是一个很好的视觉指示,表明正在发生的事情,而不是过于华丽。有趣的是,如果你不刷得足够远,那么当前的页面会重新回到原位。但不确定我是否需要那部分。
有问题的视图是UIWebView。我假设我可以让另外一个UIWebView,根据需要填充其内容,并动画两者之间的过渡。只是不知道该怎么做。
我正在编写IOS 4及以上版本。
谢谢
答案 0 :(得分:1)
我在我的应用程序中做了类似的事情。看看我的代码负责处理长按手势(也可以刷卡):
float startX;
float displacement;
-(IBAction)handleLongPressGesture:(UILongPressGestureRecognizer *)sender
{
float nowX;
if ( sender.state == UIGestureRecognizerStateBegan )
{
startX = [sender locationInView:mainWidgetView].x;
}
if ( sender.state == UIGestureRecognizerStateEnded || sender.state == UIGestureRecognizerStateCancelled)
{
if ( abs(displacement) > PIXELS_TO_MOVE )
{
if ( displacement > 0 )
[self moveLeft];
else if ( displacement < 0 )
[self moveRight ];
}
else
{
[self moveWebViewsToOriginalPositions];
}
return;
}
nowX = [sender locationInView:mainWidgetView].x;
displacement = nowX - startX;
if ( (displacement > 0 && slider.currentPage == 0) || (displacement < 0 && slider.currentPage == slider.numberOfPages -1 ) )
{
return;
}
[self moveWebViewsBy:displacement];
}
-(void)moveWebViewsBy:(float)dx
{
for (int i = 0; i<3 ; i ++)
{
float oldDx = [ mainWidgetManager originalPositionForWebView:i ] ;
//float oldDy = mainWebViews[i].layer.position.y;
float oldDy = 425/2;
[mainWebViews[i].layer setPosition:CGPointMake(oldDx+dx, oldDy)];
}
}
-(void)moveWebViewsToOriginalPositions
{
[UIView animateWithDuration:0.4
delay:0
options: UIViewAnimationOptionCurveEaseOut
animations:^{
for (int i = 0; i<3 ; i ++)
{
float oldDx = [ mainWidgetManager originalPositionForWebView:i ] ;
//float oldDy = mainWebViews[i].layer.position.y;
float oldDy = 425/2;
[mainWebViews[i].layer setPosition:CGPointMake(oldDx, oldDy)];
}
}
completion:nil];
}
如果您需要任何帮助,请告诉我。如果你愿意,我可以告诉你负责刷卡的代码。