我在scrollview中有两个子视图。我需要以编程方式定位两个子视图。我通过在DispatchQueue.main.async
内编写代码来正确地完成了它。这是代码:
DispatchQueue.main.async
{
self.SelectClientDetailView.frame = CGRect(x: 0, y: 637, width: self.SelectClientDetailView.frame.size.width, height: self.SelectClientDetailView.frame.size.height)
self.SelectClientDetailView2.frame = CGRect(x: 0, y: 837, width: self.SelectClientDetailView2.frame.size.width, height: self.SelectClientDetailView2.frame.size.height)
}
它的工作正常但是当我滚动我的滚动视图时,这两个视图都回到了原来的位置。如何解决它。其默认y
位置为SelectClientDetailView
:400和SelectClientDetailView2
:600
答案 0 :(得分:7)
如果您使用自动布局,则设置框架会产生一些奇怪的效果。自动布局和框架不会结合在一起。您需要重新排列约束,而不是帧。使用自动布局时,更改框架会产生一些奇怪的效果,最终会恢复到您在原始UIView中创建的约束。
一些解决方案:
答案 1 :(得分:6)
如果您只想更改frame
Y位置,请尝试改为:
self.SelectClientDetailView.frame.origin.y = 637
self.SelectClientDetailView.frame.origin.y = 837
如前所述,您可能需要检查视图层次结构以确保实际将它们添加到UIScrollView
(而不是其他地方)。