作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有分页功能的 UIScrollView (因此带有 UIPageControl 并在页面之间左右拖动/轻拂的典型模型),并且我的工作正常。奇怪的是,当我想摆脱弹跳(这样就看不到左右两侧 UI 后面的黑色)时,突然分页不再起作用。
换句话说,当:
scrollView.pagingEnabled = YES;
scrollView.bounces = YES;
一切正常,除了我不喜欢页面(0)和页面(length-1)处的弹跳。但是当我这样做时:
scrollView.pagingEnabled = YES;
scrollView.bounces = NO;
它不再在每一页上卡入到位,而是将所有页面一起视为一个长页面。因此,似乎出于某种原因,分页依赖于弹跳,只要我能以某种方式阻止弹跳,就可以了。那么,有没有其他方法可以摆脱它呢?还是我做错了什么?
编辑:解决方案:
@interface PagingScrollView : UIScrollView
@end
@implementation PagingScrollView
- (id)initWithFrame:(CGRect)frame
{
if (self = [super initWithFrame:frame])
{
self.pagingEnabled = YES;
self.bounces = YES;
}
return self;
}
- (void)setContentOffset:(CGPoint)offset
{
CGRect frame = [self frame];
CGSize contentSize = [self contentSize];
CGPoint contentOffset = [self contentOffset];
// Clamp the offset.
if (offset.x <= 0)
offset.x = 0;
else if (offset.x > contentSize.width - frame.size.width)
offset.x = contentSize.width - frame.size.width;
if (offset.y <= 0)
offset.y = 0;
else if (offset.y > contentSize.height - frame.size.height)
offset.y = contentSize.height - frame.size.height;
// Update only if necessary
if (offset.x != contentOffset.x || offset.y != contentOffset.y)
{
[super setContentOffset:offset];
}
}
@end
最佳答案
您最好的选择是编写一个 UIScrollView
子类并手动实现所需的行为。您应该能够从将 pagingEnabled
和 bounces
都设置为 YES
开始,然后用您的覆盖 -setContentOffset:
自己的剪辑边缘的方法。
关于iphone - UIScrollView - (bounces = NO) 似乎覆盖 (pagingEnabled = YES),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1446511/
我是一名优秀的程序员,十分优秀!