添加视图会导致情节提要中的约束得以更新

问题描述 投票:0回答:1

我创建了一个UIScrollView,并在情节提要中设置了约束,但是有时我会在运行时将UIScrollView移到其他位置。

我以编程方式创建自定义UIView并将其添加到主UIView时发生了问题。我的约束将更新,如果我的UIScrollView不是同一位置,它将被移到情节提要设置。

例如,假设我的UIScrollView固定在屏幕的顶部,然后在运行时将其移动到屏幕的底部。如果我执行此代码:

  let menu = UIView()
  menu.frame.size = CGSize(width: 210, height: 80)
  menu.center = view.center
  view.addSubview(menu)

我的UIScrollView将移回到屏幕上的水龙头。我尝试了一下,但是没有用:

  myScrollView.constraints.first?.isActive = false
ios swift uiview uiscrollview constraints
1个回答
1
投票

使用自动布局和约束时,无法通过显式设置view.frame来更改帧。

如果您尝试这样做,则在下一个UI更新中,自动布局会将视图重置为其约束。

如果需要在运行时移动视图/调整视图大小,则需要引用已设置的约束,然后修改约束。

例如,如果您的滚动视图从视图顶部被限制了20点,并且您希望在运行时将其向下移动50点...

  • 为顶部约束创建一个IBOutlet
  • 在代码中,使用myTopConstraint.constant = 70.0
© www.soinside.com 2019 - 2024. All rights reserved.