単一の uiscrollView に 4 つのページがあり、ページングが有効になっています。各ページの高さが異なる場合があります。scrollViewDidEndDeceleratingデリゲートでスクロールビューのコンテンツサイズを大きくしようとしましたが、役に立ちません。
各ページのスクロールビューのコンテンツサイズを異なる方法でインクリメントする方法を提案できますか?
前もって感謝します。
単一の uiscrollView に 4 つのページがあり、ページングが有効になっています。各ページの高さが異なる場合があります。scrollViewDidEndDeceleratingデリゲートでスクロールビューのコンテンツサイズを大きくしようとしましたが、役に立ちません。
各ページのスクロールビューのコンテンツサイズを異なる方法でインクリメントする方法を提案できますか?
前もって感謝します。
ネイティブにはできないと思います。ただし、ページングを無効にして手動で行うことができます。
そのための便利なデリゲート メソッドがあります。
-(void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset;
これにより、scrollView がスクロールを終了する場所を設定できます。
-(void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset{
float offsetY = floorf((*targetContentOffset).y);
float yGoto = 0.0;
// Find out, based on that offsetY in which page you are
// and set yGoto accordingly to the start of that page
// In the following example my pages are 320px each
// I start by only allowing to go 1 page at a time, so I limit
// how far the offsetY can be from the current scrollView offset
if(offsetY > scrollView.contentOffset.y + 160){
// Trying to scroll to more than 1 page after
offsetY = scrollView.contentOffset.y + 160;
}
if(offsetY < scrollView.contentOffset.y - 160){
// Trying to scroll to more than 1 page before
offsetY = scrollView.contentOffset.y - 160;
}
if(offsetY < 0){
// Trying to scroll to less than the first element
// This is related to the elastic effect
offsetY = 0;
}
if(offsetY > scrollView.contentSize.height-320){
// Trying to scroll to more than the last element
// This is related to the elastic effect
offsetY = scrollView.contentSize.height - 1;
}
// Lock it to offsets that are multiples of 320
yGoto = floorf(offsetY);
if((int)offsetY % 320 > 160){
int dif = ((int)offsetY % 320);
yGoto = offsetY + 320 - dif;
}else{
int dif = ((int)offsetY % 320);
yGoto = offsetY - dif;
}
yGoto = floorf(yGoto); // I keep doing this to take out non integer part
scrollView.decelerationRate = UIScrollViewDecelerationRateFast;
(*targetContentOffset) = CGPointMake(scrollView.contentOffset.x,yGoto);
}
それが役に立てば幸い!
それは不可能です。コンテンツのサイズはスクロール ビューの境界であり、長方形です。ページごとにどのように変更できますか? ページを拡大縮小して同じサイズにし、ズームを使用しないのはなぜですか?