2015-11-25 12 views
11

スクロールでcontentOffsetが2つのポイント(以下の画像を参照してください)の間にある場合、プログラムでスクロールビューのcontentOffsetを設定したいと思います。スムーズなコンテンツオフセットの移動UIScrollViewスウィフト

問題は、私は移動のための滑らかな移行を追加したいと思いますが、私はこれのためのドキュメントを見つけられませんでした。私は徐々にコンテンツのオフセットを減らすためにループを実行しようとしましたが、結果はあまり良くありません。

この例では、コンテンツのオフセットがスクロールの最後に150 px未満の場合、オフセットが100に等しい点までスムーズに(アニメーションの長さは1秒になります)最大150 px、200pxになります。

あなたが私に何をすべきかの指示(ドキュメントまたは簡単な例)を提供できる場合は、素晴らしいことです:)ありがとうございます!

enter image description here

答えて

17

あなたはここにUIView.animations

func goToPoint() { 
    dispatch_async(dispatch_get_main_queue()) { 
     UIView.animateWithDuration(2, delay: 0, options: UIViewAnimationOptions.CurveLinear, animations: { 
     self.scrollView.contentOffset.x = 200 
     }, completion: nil) 
    } 
    } 
+0

ありがとう、私はあなたのコードを使用してSwift 3バージョンを作成しました。 編集 - ここでコードが乱雑になるので、私はこれに対する答えとして投稿します。 – user3739902

+1

@fatihyildizhanだからこのコードを使用し、私は魅力のように動作します、ありがとう!私は 'dispatch_async(dispatch_get_main_queue())'ではなく、同じことをしようとしましたが、アニメーション中にcontentOffsetが0.0に戻っているため正しく動作しませんでした。正しく動作するために 'dispatch_async(dispatch_get_main_queue())'でなぜこのmakeが必要なのか私に説明できますか? – Mette

8

を使用することができますfatihyildizhanのコードのスウィフト3バージョンがあります。

 DispatchQueue.main.async { 
     UIView.animate(withDuration: 0.2, delay: 0, options: UIViewAnimationOptions.curveEaseOut, animations: { 
      self.myScrollView.contentOffset.x = CGFloat(startingPointForView) 
      }, completion: nil) 
    } 
関連する問題