在iOS中为屏幕上下设置动画

时间:2011-12-14 16:43:14

标签: ios xcode uiviewanimation

我正在尝试创建向用户显示的数据列表。当他们单击下一个或上一个按钮,或者在滚动视图上滑动时,视图应该从左到右或从右到左从屏幕转换,具体取决于他们按下哪个按钮或他们滑动的方向。除了视图在整个屏幕上滑动(意味着它滑过按钮顶部)之外,我才能使用它。

以下是进行转换的代码。我的滚动视图只是一个普通的旧视图,但它位于页面的中间,它的坐标为(40,54,240,311)所以我希望它在280处消失并再次出现在40处。就像我说的那样,它现在进入了屏幕为0并在320退出屏幕(在正常肖像模式下)。

//Animate the scrollview across the screen
CATransition* animation = [CATransition animation];
[animation setDuration:0.5];
[animation setType:kCATransitionPush];
[animation setSubtype:kCATransitionFromLeft];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[[self.scrollView layer] addAnimation:animation forKey:nil];

我真的希望这可以像iPhone上的Kindle App一样工作,用户可以向左或向右拖动视图以显示下一页。我调查了可能使它成为滚动视图。所以上面的代码在屏幕上滑动我的滚动视图,在我的滚动视图中,我只是有一些标签和我设置的图像。

//set the content of the screen
self.imageView.image = [UIImage imageNamed: @"image1.png"];
self.labelNumber.text = @"1";
self.labelText.text = @"Test";

我的一些初步想法是我需要两个滚动视图,我必须在它们之间进行转换,或者我应该创建一个非常宽的滚动视图,并为左侧或右侧提供下一个或上一个事实的数据。但这两个似乎都很糟糕,因为我必须在屏幕上有一堆重复的控件,插座等。

PS这是我第一次在这个网站上发帖。活泉。

1 个答案:

答案 0 :(得分:1)

您需要创建一个新的空白UIView,它是滚动视图的超级视图,与滚动视图的大小相同。然后你需要在这个新的超级视图上调用clipsToBounds:YES。

类似的东西:

UIView *blankView = [[UIView alloc] initWithFrame:CGRectMake(40, 54, 240, 311)];
[newView setClipsToBounds:YES];
[scrollViewsParentView addSubview:blankView]

UIScrollView *yourScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 54, 311)];
[blankView addSubview:yourScrollView];

注意“yourScrollView”坐标的变化?这是因为它的父级现在是空白视图。

另外,我已经完成了使用两个UIScrollViews显示它们之间转换的确切想法。你有一个屏幕(显示)UIScrollView和一个屏幕外(不显示)UIScrollView,然后动画显示转换。在这种情况下,它们将具有相同的父级(blankView)。

您可能还想查看这些UIView方法:

animateWithDuration:animations:
animateWithDuration:animations:completion:
animateWithDuration:delay:options:animations:completion:

希望这能回答你的问题。