1

だから、私はその上にカードを持っているScrollViewを持っています。ScrollViewはページングが有効になっている必要があります。

目標は、カードが1枚しかない場合でも、ユーザーがスクロールできる必要があることです。カードの画像とまったく同じ幅と高さのScrollViewのフレームを使用しているので、ScrollView.contentSizeの幅を広げて、それに1ポイントを追加することにしました。

正常に動作していることがわかりますが、少しグリッチが発生します。カードを左にドラッグしてからもう一度つかむと、少し右に移動します(おそらく、その1ポイントの値)。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

scrollviewのbouncesプロパティをTRUEに設定できます。

スクロールビューの境界を超えた場合は、常に跳ね返ります。:)

于 2012-08-27T22:27:40.663 に答える