我正在尝试创建向用户显示的数据列表。当他们单击下一个或上一个按钮,或者在滚动视图上滑动时,视图应该从左到右或从右到左从屏幕转换,具体取决于他们按下哪个按钮或他们滑动的方向。除了视图在整个屏幕上滑动(意味着它滑过按钮顶部)之外,我才能使用它。
以下是进行转换的代码。我的滚动视图只是一个普通的旧视图,但它位于页面的中间,它的坐标为(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这是我第一次在这个网站上发帖。活泉。
答案 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:
希望这能回答你的问题。