管理ScrollView中仅一个元素的滚动

时间:2012-08-27 21:09:40

标签: ios uiscrollview scroll-paging

所以,我有一个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
}

...

}

1 个答案:

答案 0 :(得分:2)

您可以将scrollview的跳出属性设置为TRUE。

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