Author Topic: UICenterOnChild.CenterOn which does not go over the scroll limit  (Read 1018 times)

k_kawasaki

  • Newbie
  • *
  • Thank You
  • -Given: 0
  • -Receive: 2
  • Posts: 1
    • View Profile
Hi
I am using NGUI3.8.2

I use UIScrollView.
I use UICenterOnChild.CenterOn.
UICenterOnChild.CenterOn ignores the scroll limit.

I remodeled CenterOn not to go over the scroll limit.

Before
  1.                         // Spring the panel to this calculated position
  2. #if UNITY_EDITOR
  3.                         if (!Application.isPlaying)
  4.                         {
  5.                                 panelTrans.localPosition = panelTrans.localPosition - localOffset;
  6.  
  7.                                 Vector4 co = mScrollView.panel.clipOffset;
  8.                                 co.x += localOffset.x;
  9.                                 co.y += localOffset.y;
  10.                                 mScrollView.panel.clipOffset = co;
  11.                         }
  12.                         else
  13. #endif
  14.                         {
  15.                                 SpringPanel.Begin(mScrollView.panel.cachedGameObject,
  16.                                         panelTrans.localPosition - localOffset, springStrength).onFinished = onFinished;
  17.                         }
  18.  

After
  1.                         // Spring the panel to this calculated position
  2. #if UNITY_EDITOR
  3.                         if (!Application.isPlaying)
  4.                         {
  5.                                 panelTrans.localPosition = panelTrans.localPosition - localOffset;
  6.                                
  7.                                 Vector4 co = mScrollView.panel.clipOffset;
  8.                                 co.x += localOffset.x;
  9.                                 co.y += localOffset.y;
  10.                                 mScrollView.panel.clipOffset = co;
  11.                         }
  12.                         else
  13. #endif
  14.                         {
  15. // Change Begin
  16.                                 var move = panelTrans.localPosition - panelTrans.localPosition - localOffset;
  17.                                 mScrollView.MoveRelative(move);
  18.                                
  19.                                 var ofs = mScrollView.panel.CalculateConstrainOffset(mScrollView.bounds.min,mScrollView.bounds.max);
  20.                                 var targetPos = ofs + panelTrans.localPosition;
  21.                                
  22.                                 mScrollView.MoveRelative(-move);
  23.                                
  24.                                 SpringPanel.Begin(mScrollView.panel.cachedGameObject,targetPos, springStrength).onFinished = onFinished;
  25. // Change End
  26.                         }
  27.  
  28.  

How is this?

mukulabdagiri

  • Newbie
  • *
  • Thank You
  • -Given: 2
  • -Receive: 0
  • Posts: 11
    • View Profile
Re: UICenterOnChild.CenterOn which does not go over the scroll limit
« Reply #1 on: March 05, 2019, 05:53:15 AM »
Cool. Thanks.