我有一个视图控制器,而不是在屏幕的上半部分包含一个UIScrollView。在下半部分,我有一个标签。这是表的详细视图,因此一旦从表中选择了一个项目,它就会加载此详细信息视图。您选择的某些项目具有不同的变体,因此这是滚动视图的来源。您可以向左和向右滚动以查看变体。
当滚动视图滚动时,我试图让滚动视图标签更改为其文本。以下是我用来检测我所在页面的内容:
CGFloat pageWidth = scrollView.frame.size.width;
int page = floor((scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
返回滚动视图的“页码”。当用户滚动到其他页面时,如何告诉标签更改文本?我看了很多例子,包括自定义代表,但我似乎无法找到一个好的解决方案。
作为旁注,要显示的标题是一个数组,所以一旦我找到一种方法来告诉标签(以及将来可能显示的任何其他标签)更新,objectAtIndex:page - 1
将是完美的
答案 0 :(得分:2)
为什么不尝试一下:
#define ScrollObjWidth 320.0f // Note: Use what size you need!
- (void)scrollViewDidScroll:(UIScrollView *)scrollView; {
float roundedValue = round(scrollView.contentOffset.x / ScrollObjWidth);
_label.text = [NSString stringWithFormat:@"%d", ((int)roundedValue - 1)];
}
确保UIViewController
为UIScrollViewDelegate
,并UIScrollView
将delegate
属性设置为UIViewController
。
希望有帮助!