嘿伙计们我正在尝试使用页面控件实现滚动,例如iPhone主屏幕,但是在uitableview单元格中。
我尝试做的是创建一个带有xib文件的自定义表格视图单元格,并在其上放置uipagecontrol和uiscrollview,并将其与iboutlet连接到uitableviewcell。
这是自定义单元格的.h文件中的代码。
@interface ScrollableCell : UITableViewCell <UIScrollViewDelegate>
@property (nonatomic, strong) IBOutlet UIScrollView *scrollView;
@property (nonatomic, strong) IBOutlet UIPageControl *pageControl;
@property (nonatomic, strong) NSMutableArray *viewControllers;
这是合成属性后自定义单元格的.m文件中的代码。
- (CGSize)contentSizeForPagingScrollView {
CGRect bounds = self.scrollView.bounds;
return CGSizeMake(bounds.size.width * [self.viewControllers count] , bounds.size.height );
}
@- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
UIView *blueView = [[UIView alloc] initWithFrame:CGRectZero];
[blueView setBackgroundColor:[UIColor blueColor]];
UIView *redView = [[UIView alloc] initWithFrame:CGRectZero];
[redView setBackgroundColor:[UIColor redColor]];
UIView *yellowView = [[UIView alloc] initWithFrame:CGRectZero];
[yellowView setBackgroundColor:[UIColor yellowColor]];
self.viewControllers = [NSArray arrayWithObjects:blueView, redView, yellowView,nil];
for (UIView *view in self.viewControllers) {
[view setFrame:CGRectMake([self.viewControllers indexOfObject:view]*self.scrollView.frame.size.width+5,
5,
self.scrollView.frame.size.width-10,
self.scrollView.frame.size.height-10.0)];
[self.scrollView addSubview:view];
}
self.pageControl.numberOfPages = [self.viewControllers count];
self.pageControl.currentPage = 0;
self.scrollView.pagingEnabled = YES;
self.scrollView.backgroundColor = [UIColor blackColor];
self.scrollView.showsVerticalScrollIndicator = NO;
self.scrollView.showsHorizontalScrollIndicator = NO;
self.scrollView.contentSize = [self contentSizeForPagingScrollView];
self.scrollView.delegate = self;
[self.contentView addSubview:self.scrollView];
[self.contentView addSubview:self.pageControl];
}
return self;
}
-(void) scrollViewDidScroll:(UIScrollView *)scrollView
{
CGFloat pageWidth = scrollView.frame.size.width;
int page = floor((scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
self.pageControl.currentPage = page;
}
希望你们能帮我解决这个问题。如果我正在尝试不同的方法/更好的方法,请告诉我。
对于我想要实现的目标的视觉参考,我认为脉冲新闻应用程序适合该法案
http://itunes.apple.com/us/app/pulse-news-for-iphone/id377594176?mt=8
它是一个表格视图,每个单元格都有水平滚动。
感谢。
答案 0 :(得分:0)
如果我正在尝试不同的方法/更好的方法,请告诉我。 对于我想要实现的目标的视觉参考,我认为脉冲新闻应用程序适合该法案。
如果你设计这个的主要参考是Pulse应用程序,你应该知道开发人员确实 NOT 使用了scrollview。 Pulse应用程序都是tableviews。一个主要的垂直桌面视图和几个水平的“黑客”桌面视图,每个单元格组成垂直的一个。
这是一个非常聪明的tableview实现。但是谁比你自己的开发者更好地向你解释这一点;他们被邀请参加斯坦福大学的iOS编程课程。 Its on iTunes U and it's at 6 min in the lecture called 10 Hacks to Go From Idea To #1 App.您应该观看它,如果它更适合您,可能会重新考虑您的应用设计。