滚动条在UIScrollView(iOS7)上始终可见?

时间:2013-12-02 16:25:44

标签: ios ipad uiscrollview

有可能使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

1 个答案:

答案 0 :(得分:1)

您发布的代码似乎是覆盖setAlpha上的UIImageView的类别,并检查视图的标记以查看它是否与UIScrollView指标条的预期标记匹配。这真是太烂了。您依赖于保持不变的标签(它们总是不会),并且指示条为UIImageView个对象(它们现在可能是,但您在将来的iOS版本中无法保证这一点)。

您无法将UIScrollView中的滚动条指示器设置为永久打开 - API不支持此指示器。而不是试图搞乱滚动视图的底层架构,如果你真的想这样做,你可能会更好地实现自己的指标。

这应该不会太难,因为你知道滚动视图中内容的大小,你也可以获得偏移量,所以只需创建两个指示器视图并根据需要移动它们(I说“太难了” - 这并不容易,但它比你发布的代码稍微优雅一点。