第一次设置 UIView 的新位置,它跳到屏幕顶部
Posted
技术标签:
【中文标题】第一次设置 UIView 的新位置,它跳到屏幕顶部【英文标题】:First time setting a new position of a UIView, it jumps to the top of the screen 【发布时间】:2020-02-25 22:58:43 【问题描述】:我构建了一个小的 ios 应用程序。
在这个应用程序中,我将 UIView 移动到不同的位置并使用 isHidden 属性显示它。这不是动画。视图是隐藏的,当我按下按钮时,视图会移动到特定位置并将显示在那里 (isHidden = false
) 它工作正常,但是当我第一次点击按钮时,视图出现在屏幕顶部。
我只使用左、右、高和宽的自动布局。不是顶部或底部。所以我不知道为什么视图第一次出现在屏幕顶部。我已经检查了正确的位置。代码:
vErgebnis.frame.origin.y = pos_y
非常感谢
【问题讨论】:
如果您使用自动布局,则不应操纵frame
- 您应该操纵自动布局约束以将视图放置在您想要的位置。视图确实需要一个顶部或底部约束,否则自动布局无法确定放置它的位置,因此它最终位于屏幕顶部。
【参考方案1】:
正如@Paulw11 所说,您不应该混合使用自动布局和框架操作。为了做你想做的事,我建议在视图顶部添加一个约束。然后我将该约束链接到视图控制器上的属性,当您单击按钮时,更改约束的 constant
属性的值以向上或向下移动视图。
【讨论】:
好的,我试试这个。正确的做法是什么?【参考方案2】:如果您将使用自动布局,则无法设置框架矩形。您可以四种组合中的一项。并在按钮单击时更改约束值。对于 x 方向变化的前导和尾随。为y方向改变上下约束值。
-
前导、顶部、宽度、高度约束。
尾随、底部、宽度、高度限制。
前导、底部、宽度、高度约束。
尾随、顶部、宽度、高度限制。
另一方面,如果您想使用框架,请按照这些步骤操作。
-
首先隐藏了您的视图。
设置您想要的位置。
之后可见您的视图。
【讨论】:
以上是关于第一次设置 UIView 的新位置,它跳到屏幕顶部的主要内容,如果未能解决你的问题,请参考以下文章
在 iPhone X 中叠加时,UIView 的顶部位置不正确
在 tableview 滚动和再次拖动 tableview 上动画 UIView 位置
将 MPMoviePlayerController 视图置于 UIview 的中心(相同位置)