Eli*_*Eli 8 iphone paging user-interface uiscrollview bounce
我有一个带有分页的UIScrollView(所以典型的模型带有UIPageControl并在页面之间左右拖动/轻弹),我的工作正常.奇怪的是,当我想摆脱弹跳(这样你不能在左侧和右侧的UI后面看到黑色)时,突然分页不再有效.
换句话说,当:
scrollView.pagingEnabled = YES;
scrollView.bounces = YES;
Run Code Online (Sandbox Code Playgroud)
一切正常,除了我不喜欢页面(0)和页面(长度-1)的弹跳.但是当我这样做时:
scrollView.pagingEnabled = YES;
scrollView.bounces = NO;
Run Code Online (Sandbox Code Playgroud)
它停止在每个页面上捕捉到位,而是将所有页面一起视为一个长页面.所以看起来由于某种原因,分页依赖于弹跳,只要我能以某种方式阻止弹跳就可以了.那么,还有另一种摆脱它的方法吗?或者有什么我做错了吗?
编辑: 解决方案:
@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
Run Code Online (Sandbox Code Playgroud)
您最好的选择是编写UIScrollView子类并手动实现所需的行为.你应该能够开始pagingEnabled和bounces均设置为YES,然后覆盖-setContentOffset:用自己的方法夹子夹住.
| 归档时间: |
|
| 查看次数: |
5311 次 |
| 最近记录: |