Aug 27, 2021, TIL (Today I Learned) - ScrollView and bounds



学習内容


この文章はstackoverflowで本稿を説明して残した文章である.
ここには長方形が2つあります.
  • 合計
  • スクロールとは、領域全体に表示される原点の一部の位置を変更することです.

    ScrollView.bounds & contentView


    iOSでは、すべてのビューがview.boundsで表示されています.UIScrollViewクラスにはviewだけでなく、contentViewというユニークなプログラムもあります.
    スクロールビューでは

  • 表示される面積はscollView.boundsです.

  • 総面積はcontentViewで、このビューのサイズはscrollView.contentSizeです.
  • ContentOffsetは?

    contentOffsetscrollView.bounds.originと同じ意味です.
    ContentOffsetのコード実装を見てみましょう.
    var contentOffset: CGPoint { 
        get { return bounds.origin }
        set {
            var bounds = self.bounds
            bounds.origin = newValue
            self.bounds = bounds
        }   
    }
    bounds.originを返す演算プログラムであることがわかります.
    scrollViewのcontentOffsetの値を変更すると、scrollview.bounds.originの値も変化します.

    起源はね。


    ビューの原点を表します.ここで、原点はviewの最左上隅を表します.imageView.frame.originなら
    imageViewが配置されたsuperView座標系では、imageView座標の始点/

    例えばimageView.bounds.origin自分の座標系の原点、すべてのビューの境界を表します.由来
    (0,0).

    [写真の出所]:iOS)FrameとBounds(1/3)を正しく理解する-開発者
    したがって、contentOffSetは、スクロールビューにおける画面上の座標系原点を示す.

    targetContentOffsetとは?

    UIScrollViewDelegateには、次の方法があります.
    optional func scrollViewWillEndDragging(_ scrollView: UIScrollView, 
                               withVelocity velocity: CGPoint, 
                        targetContentOffset: UnsafeMutablePointer<CGPoint>)
    ここでいうtargetContentOffsetとは、スクロールが終了して停止したときのcontentOffSetのことである.
    例は分かりやすいです.
    次の図は、アレイ内の異なる写真を示していますが、scrollViewのある時点で、画面には大きな図の一部(scrollView.bounds)が表示されています.
    つまり、全部で4枚の写真が横に並んだ大きな矩形で、スクロールするたびに画面を通して矩形の一部を見ることができます.このように

    前述のように、ユーザがドラッグを完了すると、contentOffsetと呼ばれています.
    次の例では、targetContentOffsetの座標をより明確に表示できます.

    の最後の部分

    targetContentOffsetscrollViewは本当に混同された概念です勉強中も忘れてしまうので、よくカバーしてあげたいと思います完璧な理解を忘れない日まで!!
    [注意]:
    Apple Developer Document | scrollViewWillEndDragging(_:withVelocity:targetContentOffset:)
    stackoverflow - What does contentOffset to in a UIScrollView