1

所以,我有一个 ScrollView,上面有卡片。ScrollView 必须启用分页。

目标是用户必须能够滚动它,即使它只有一张卡片。由于我的 ScrollView 框架的宽度和高度与卡片图片完全相同,因此我决定增加 ScrollView.contentSize 的宽度并为其添加一个点。

事实证明它工作正常,但它有点小故障 - 当我将卡拖到左边,然后再次抓住它时,它会向右移动一点(我猜,对于那个点的值)。如果我增加 contentSize,则偏移也会增加(例如,如果内容大小增加 10,则偏移值也会增加 10 个点)。这真的让我很恼火,我想摆脱它。

关于如何做到这一点的任何建议?非常感谢您的帮助。

UPD:我尝试在 scrollViewDidEndDecelerating 中手动将卡片重新居中,但这没有帮助。我现在的猜测是可以通过将内容偏移设置为正确的值来解决问题(因为现在它是(0,0)),但我不知道该怎么做。

UPD2:这是我现在使用的一些代码:

calendarScrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, 334, 372)]; 
//The cards themselves are 334 points wide too
calendarScrollView.clipsToBounds = NO;
calendarScrollView.pagingEnabled = YES;
calendarScrollView.bounces = YES;
calendarScrollView.showsHorizontalScrollIndicator = NO;
calendarScrollView.delegate = self;

//This part is used in the cycle of creating the cards
for (...) {

...

if (onlyOneCard) {
  calendarScrollView.contentSize = CGSizeMake(335, 372);
  onlyOneCard = 0;
} else {
  calendarScrollView.contentSize = CGSizeMake(334+offsetInScrollView, 372); //offsetInScrollView is increased by 334 by every end of the iteration of the cycle
}

...

}
4

1 回答 1

2

您可以将滚动视图的反弹属性设置为 TRUE。

如果您超出滚动视图的范围,它将始终反弹。:)

于 2012-08-27T22:27:40.663 回答