我正在构建显示新闻文章的iPhone应用程序。
为了阅读一篇文章,我有一个带UITableView的视图,它显示了文章的内容。
我需要什么: 我希望用户能够用手指滑动到下一篇文章,效果就像苹果的pageControl样本,或者像在图片之间滑动一样。(来回移动视觉效果)
问题: 唯一的方法是使用UIScrollView和“pages”, 或者有简单的方法,包括检测滑动+操纵开关效果+推动视图控制器?
我想到的其他方向是,如果我可以使用一个水平tableview创建一个视图,每个单元格将显示一篇文章,用户将滑动以移动到下一个单元格。
用于iphone的BTW-fox新闻应用程序具有此功能,但似乎他们使用“页面控制”解决方案。任何信息都会有所帮助。
答案 0 :(得分:7)
页面控制不是我认为的唯一解决方案。 想象一下,你在viewController中查看了视图,然后当你检测到滑动及其方向时, 你只需要:
你已经完成了......
以下是一个例子:
// in your uiviewcontroller subclass
UIVIew *viewOne, *viewTwo;
-(void)swipeFromView:(UIVIew *)visibleView
toView:(UIView *)pushingView
direction:(UISwipeGestureRecognizerDirection)aDirection {
// assuming the content of pushingView already set
CGPoint visibleViewCenter = [visibleView center]; // register the center
CGRect visibleViewFrame = [visibleView frame];
CGPoint pushingViewCenter, visibleViewNewCenter;
visibleViewNewCenter.y = visibleViewCenter.y;
pushingViewCenter.y = visibleViewCenter.y;
// I use 2 here, but you would make more calculations
pushingViewCenter.x = 2 * visibleViewFrame.width;
visibleViewNewCenter.x = -1 * 2 * visibleViewFrame.width;
// reversing x if direction is right
if(aDirection == UISwipeGestureRecognizerDirectionRight) {
pushingViewCenter.x *= -1;
visibleViewNewCenter.x *= -1;
}
// once the tmp center for pushingView is calculated
// set it, and run the animation
[pushingView setCenter:pushingViewCenter];
[UIVIew animateWithDuration:theDurationYouWant
animations:^{
[visibleView setCenter:visibleViewNewCenter];
[pushingView setCenter:visibleViewCenter];
}];
}
// somewhere else, you handle the swipe
-(void)handleSwipeGesture:(UISwipeGestureRecognizer *)sender {
// set content, etc
[self swipeFromView:viewOne toView:viewTwo direction:[sender direction]];
}
希望这有帮助。