自定义UIScrollView的滚动条

时间:2011-12-21 15:01:21

标签: iphone ipad uiscrollview

好的,所以主题为自己说话 - 我需要使用自定义图像更改默认滚动条。我一直在寻找一种解决方案,它不需要你编写自己的ScrollView类或者使用hacks来创建带有滚动条图像的UIView并在滚动时重新定位它。

我喜欢的一个解决方案是使用简单的UIScrollView类别并以UIScrollView的子视图访问滚动条:http://leonov.co/2011/04/uiscrollviews-scrollbars-customization/#comment-7909但是出于某种原因,这个对我来说不起作用。当我创建UIScrollView并获取其子视图数组时,只显示我手动添加到scrollview的视图。我无法访问通过子视图数组迭代的滚动条。例如,此代码:

UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(10,10,100,100)];  
scrollView.userInteractionEnabled = YES;    
scrollView.bounces = NO;
scrollView.showsHorizontalScrollIndicator = YES;   
NSLog(@"Subviews count is %d", [[scrollView subviews] count]);

将记录“子视图计数为0”。或者,如果我将X元素添加到scrollview,“Subviews count is X”。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

仅在滚动视图时创建UIScrollbar滚动视图。当视图停止滚动时,它们会再次被删除。这可能是您无法在类别中找到它们的原因。

您可以将滚动视图子视图遍历代码移动到scrollview委托的scrollViewDidScroll方法中,这意味着只要视图滚动就会执行它。

我不禁觉得这是一个可怕的,不必要的黑客攻击,你最好隐藏滚动条并使用委托方法自己实现它们来确定何时显示和隐藏自定义滚动条视图和contentOffset属性,以确定它的位置。