如何根据视图高度值的变化上下移动UIScrollView?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何根据视图高度值的变化上下移动UIScrollView?相关的知识,希望对你有一定的参考价值。

鉴于从4872,从7248的视图大小的变化,如何相应地上下移动滚动视图?

情况A:视图的高度为48。

[    ] a view
----- keyboard upper edge

现在视图将其大小从48更改为72.其中一部分(24点)隐藏在键盘后面。

[    ] a view
----- keyboard upper edge
[////] a view's part that got hidden.

Q1:如何向上移动scrollView以便键盘不会遮挡放大的视图?


情况B:视图的高度为72。

[     ] a view
[     ]
------- keyboard upper edge

视图再次更改其大小。这个时间从72到48。

[     ] a view
unwanted empty space
------  keyboard upper edge

Q2:如何将滚动视图向下移动到其位置,因此没有不需要的空白区域?

答案

从界面构建器拖动作为更改窗体48到72的视图的IBOulet高度约束命名它viewHeightCon还拖动scrollview名称的底部约束它scrollViewBottomCon

   func changeTo48OR72 (value: Int)
   {

       // adjust view height here
       self.viewHeightCon.constant = value

         if(value == 72)
        {
           // make scrollview up sum of keyboard and 24 [72-48]
           self.scrollViewBottomCon.constant = -1 * (keyboardHeight + 24)
        }
        else if(value == 48)
        {
           // restore scrollview directly up keyboard
          self.scrollViewBottomCon.constant = -1* keyboardHeight
        } 


       // animate height change

       UIView.animate(withDuration: 0.2, animations: {

        self.view.layoutIfNeeded()

       })


   }

以上是关于如何根据视图高度值的变化上下移动UIScrollView?的主要内容,如果未能解决你的问题,请参考以下文章

如何获得根据标签内容动态变化的 UIView 的高度 - Swift

iOS-基于键盘显示的UITextField高度和按钮移动的变化

如何使 tableviewcell 高度自动增长

如何动态修改日历高度?

如何设置自动布局,以便 UILabel 调整大小并根据需要移动其他视图

在 iOS 中根据设备高度定位视图