是否可以使UIScrollView指示器始终显示在iOS7中?不仅在滚动时!
我已经搜索过了,但找不到让它发挥作用的方法。
我已经尝试了下面的代码,但它在iOS7 上不起作用
#define noDisableVerticalScrollTag 836913
#define noDisableHorizontalScrollTag 836914
@implementation UIImageView (ForScrollView)
- (void) setAlpha:(float)alpha {
if (self.superview.tag == noDisableVerticalScrollTag) {
if (alpha == 0 && self.autoresizingMask == UIViewAutoresizingFlexibleLeftMargin) {
if (self.frame.size.width < 10 && self.frame.size.height > self.frame.size.width) {
UIScrollView *sc = (UIScrollView*)self.superview;
if (sc.frame.size.height < sc.contentSize.height) {
return;
}
}
}
}
if (self.superview.tag == noDisableHorizontalScrollTag) {
if (alpha == 0 && self.autoresizingMask == UIViewAutoresizingFlexibleTopMargin) {
if (self.frame.size.height < 10 && self.frame.size.height < self.frame.size.width) {
UIScrollView *sc = (UIScrollView*)self.superview;
if (sc.frame.size.width < sc.contentSize.width) {
return;
}
}
}
}
[super setAlpha:alpha];
}
@end
您发布的代码似乎是一个覆盖UIImageView
上的setAlpha
的类别,并检查视图的标记以查看它是否与UIScrollView指示栏的预期标记匹配。这真是太让人生气了。你依赖的是保持不变的标签(它们总是不会),指示条是UIImageView
对象(它们现在可能是,但在未来的iOS版本中你不能保证这一点)。
不能将UIScrollView
中的滚动条指示器设置为永久打开-API不支持此设置。与其试图破坏滚动视图的底层架构,如果你真的想这样做,你最好实现自己的指标。
这应该不会太难,因为你知道滚动视图中内容的大小,也可以获得偏移量,所以只需要创建两个指示器视图并根据需要移动它们(我说"太难了"-这并不容易,但这是一个比你发布的代码稍微优雅的解决方案)。