我正在开发一个视图,允许我显示大量文本,并通过一次显示一个页面并允许用户左右滚动来移动它。
我想我可以通过在UIScrollView中放置一个UITextView来实现它,它将pagingEnabled属性设置为YES,同时将内容宽度设置为屏幕的倍数。
我看到的只是第一页,虽然我可以向右滑动并查看其他空白页面。任何人都可以提供任何提示。这是代码......
label = [[UITextView alloc] initWithFrame: scroller.frame];
label.editable = NO;
label.scrollEnabled = NO;
label.multipleTouchEnabled = NO;
label.userInteractionEnabled = NO;
label.font = [UIFont systemFontOfSize: 14.0];
// Get text
std::string str;
// Next line gets a single string, which is from 2000 to 8000
//characters long
str = GetStringContent();
NSString * nsStr = [NSString stringWithCString: str.c_str()];
// Measure text that will display in one page.
CGRect rect = CGRectMake(0.0, 0.0, scroller.frame.size.width, scroller.frame.size.height);
CGSize calcSize = [nsStr sizeWithFont: [UIFont systemFontOfSize: 14.0]
constrainedToSize: rect.size lineBreakMode: UILineBreakModeWordWrap];
rect.size = calcSize;
CGRect maxRect = CGRectMake(0.0, 0.0, self.view.bounds.size.width, 99999.0);
CGSize maxCalcSize = [nsStr sizeWithFont: [UIFont systemFontOfSize: 14.0]
constrainedToSize: maxRect.size lineBreakMode: UILineBreakModeWordWrap];
float pages = maxCalcSize.height / self.view.bounds.size.height;
int numberOfPages = (int)ceil(pages);
// Set text
label.text = [NSString stringWithCString: str.c_str()];
// Setup scroller
scroller.scrollEnabled = YES;
scroller.pagingEnabled = YES;
scroller.bounces = YES;
scroller.contentSize = CGSizeMake(label.frame.size.width * numberOfPages, scroller.frame.size.height);
scroller.contentOffset = CGPointMake(0, 0);
scroller.frame = rect;
scroller.clipsToBounds = YES;
[scroller addSubview: label];
[label sizeToFit];
视图在IB中创建,UIScrollView被添加到IB中,“scroller”是插座的名称。
我一直在研究这个问题,感觉我错过了一些关于UIScrollView的基本知识,因为我似乎无法实现这一点。
保罗答案 0 :(得分:2)
分页只是意味着滚动视图将“捕捉”到滚动视图的宽度。这意味着当你向左滑动时,下一页将会出现,但是以320的增量停止,无论你有多大的宽度。
要做你想做的事情,你需要的代码比你要多一些。我首先制作3个文本视图并将它们保存在一个数组中,但你只能一次显示1个。
您需要实现逻辑以确定要在这些文本视图上显示的内容(要显示的文本部分),并使用此逻辑填充当前页面,上一页和下一页。
您需要听取uiscrollview委托方法以了解您所在的页面,并且您需要在用户滚动时重新计算并填充页面
如果用户滚动到下一页,您将获取2页的文本视图,并将其移动到新的“下一页”。这称为“回收”您的观点,并且plenty of questions on SO对此示例代码