在iPhone上,您可以通过三种不同的方式在不同的主屏幕之间切换。
如果我们只关注第1点和第2点,我们会发现它们很容易实现。它只是点1的UISwipeGuestureRecognizer和2的UIPanGuestureRecognizer。
将1和2组合起来似乎并不那么简单,因为滑动似乎占主导地位(我试图将它们与- (void)requireGestureRecognizerToFail:(UIGestureRecognizer *)otherGestureRecognizer结合起来)。为了触发平底锅,我不得不把我的手指放在屏幕上,拖动非常柔软,以免触发滑动。
更不用说补充第三点了。对我的知识来说,这似乎是完全不正常的。
这里有什么建议吗?先谢谢你。如果需要更多的信息来解决这个问题,我会很乐意提供的。
发布于 2012-10-22 16:03:28
主屏幕只是一个带有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];
}如果希望对当前显示的视图执行特定方法,请使用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..
}这只是个例子,向你展示你能做些什么。如果您使用的是数据库,或者每个视图不同,您应该以不同的方式设置视图或检索数据,但是逻辑是相同的.
发布于 2012-10-22 16:46:00
https://stackoverflow.com/questions/13015156
复制相似问题