実現したいこと
追記:動かすことはできたが、どれぐらい動かすかの値の調整がうまくいきません。
こんな具合でずれが生じる。
動かすコードは以下の通りです、0.1fが加算の固定値ですが、これを要素数に応じて適切な値にしたいと思いますが、
どういう計算式になるでしょうか?なんとなく、1÷(要素のyの数値)か 1÷(要素の総数)あたりかなぁと思います。
C#
1 if(EventSystem.current.currentSelectedGameObject.GetComponent<RectTransform>().position.y >= 900 ) 2 { 3 ScrollRect.verticalNormalizedPosition = ScrollRect.verticalNormalizedPosition + 0.1f; 4 5 }else if( EventSystem.current.currentSelectedGameObject.GetComponent<RectTransform>().position.y <= 120 ) 6 { 7 ScrollRect.verticalNormalizedPosition = ScrollRect.verticalNormalizedPosition - 0.1f; 8 }
~~~~~~~以下解決済み~~~~~~~
このように現在、縦スクロールの中に複数の要素を挿入し、選択できるようにしていますが、
Viewの範囲外にあるものを選択すると、当然選択しているものが見えなくなってしまうので、
これを範囲外の物を選択したとき、自動的にView内に収まるように調整したいです。
現状、これを実現する方法が全く思いつかず、いろいろと記事を調べてはみましたが、
スクロールをスナップする記事はあれど、選択を変更したときにスナップする、という挙動を
行っている記事はなかったため、知恵をお借りしたく思います。
試したこと
選択している物のポジションを取得し、Scroll viewの範囲外のポジションになったときに、スクロールバーの座標を動かそうとしたが、
要素数が変動した時に、固定値を渡しているとずれが生じる。
補足情報(FW/ツールのバージョンなど)
スクロールはtubaki様のInfinite Scrollをお借りしています。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー