我的问题与我尝试使用滚动条进行的自定义分页有关,如果您首先考虑在老虎机中实现的滚动 View 的类型,这将更容易可视化。
可以这么说,我的UIScrollView的宽度为100像素。假定它包含3个内部 View ,每个内部 View 的宽度为30像素,以使它们之间的间隔为3像素。我想要实现的分页类型是,每一页都是我的一个 View (30像素),而不是滚动 View 的整个宽度。
我知道,通常情况下,如果该 View 占据了滚动 View 的整个宽度,并且启用了分页,则一切正常。但是,在我的自定义分页中,我还希望滚动 View 中的周围 View 也可见。
我该怎么做?
最佳答案
我只是为另一个项目做的。您需要做的是将UIScrollView放入UIView的自定义实现中。我为此创建了一个名为ExtendedHitAreaViewController的类。 ExtendedHitAreaView覆盖hitTest函数以返回其第一个子对象,这将是您的滚动 View 。
滚动 View 应为所需的页面大小,即clipsToBounds = NO的30px。
扩展的点击区域 View 应为您要显示的区域的完整大小,其中clipsToBounds = YES。
将滚动 View 作为 subview 添加到扩展的命中区域 View ,然后将扩展的命中区域 View 添加到 View Controller 的 View 。
@implementation ExtendedHitAreaViewContainer
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
if ([self pointInside:point withEvent:event]) {
if ([[self subviews] count] > 0) {
//force return of first child, if exists
return [[self subviews] objectAtIndex:0];
} else {
return self;
}
}
return nil;
}
@end
关于ios - UIScrollView自定义分页,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6945964/