在 iPhone 上,您可以通过三种不同的方式在不同的主屏幕之间切换。
如果我们只看第 1 点和第 2 点,我们会发现它们实现起来很简单。这只是一个
UISwipeGuestureRecognizer
对于第 1 点和 UIPanGuestureRecognizer
为 2。将 1 和 2 结合起来似乎不是那么简单,因为滑动似乎占主导地位(我试图将它们与
- (void)requireGestureRecognizerToFail:(UIGestureRecognizer *)otherGestureRecognizer
结合起来)。要触发平移,我必须将手指放在屏幕上并非常轻柔地拖动以不触发滑动。更不用说第三点作为补充。这似乎完全不符合我的知识水平。
这里有什么建议吗?非常感谢您提前。如果需要更多信息来解决这个问题,我很乐意提供。
最佳答案
主屏幕只是一个 UIScrollView
与 UIPageControl
就这么简单:)
例子 :
// MyViewController.h
@interface MyViewController : UIViewController <UIScrollViewDelegate> {
UIScrollView *_scrollView;
UIPageControl *_pageControl;
}
// MyViewController.m
// in your viewDidLoad method
int numberOfPages = 3;
_scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width,
self.view.frame.size.height)];
[_scrollView setContentSize:CGSizeMake(numberOfPages*_scrollView.frame.size.width, _scrollView.frame.size.height)];
[_scrollView setPagingEnabled:YES];
[_scrollView setShowsHorizontalScrollIndicator:NO];
[_scrollView setDelegate:self];
[self.view addSubview:_scrollView];
_pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0, _scrollView.frame.size.height-30, _scrollView.frame.size.width, 20)];
[_pageControl setNumberOfPages:numberOfPages];
[_pageControl setCurrentPage:0];
[self.view addSubview:_pageControl];
for (int i=0; i<numberOfPages; i++) {
CGRect frame = _scrollView.frame;
frame.origin.x = frame.size.width * i;
frame.origin.y = 0;
UIView *view = [UIView alloc] initWithFrame:frame];
//Setup your view
[_scrollView addSubview:view];
}
如果要对当前显示的 View 执行特定方法,请使用
scrollViewDidScroll:
方法(例如从数据库加载内容)- (void)scrollViewDidScroll:(UIScrollView *)sender {
CGFloat pageWidth = _scrollView.frame.size.width;
int page = floor((_scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
_pageControl.currentPage = page;
//do whatever you want..
}
这只是一个示例,向您展示如何做到这一点。如果您使用的是数据库,或者每个 View 都不同,您应该以不同的方式设置 View 或检索数据,但逻辑将是相同的......
关于ios - 如何在 iPhone 上实现与在主屏幕之间导航相同的平移/滑动效果组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13015156/