在Swift中,在运行时更改Autolay约束UIView的框架
例如,我使用这段代码来改变名为Propo
的UIView
的框架位置:
self.Propo.frame.origin.x -= self.view.frame.width
( Propo
在Storyboard中有约束)
但是,当应用程序视图消失并重新出现时, UIView
会将其自身重置为原来的位置。 我该如何解决呢? 我想让UIView
保持其位置,当我改变它的编程。
我已经尝试updateViewConstraints()
的东西附加…
约束和手动框架操纵直接冲突。 你必须select一个或另一个。 您应该改为通过Ctrl-拖动到您的视图控制器作为一个@IBOutlet在故事板中的约束,你想改变。 然后,你可以操纵它的常量:
class MyViewController: UIViewController { @IBOutlet weak var myPropoLeftEdgeConstraint: NSLayoutConstraint! @IBAction doChangePropo(sender: AnyObject) { myPropoLeftEdgeConstraint.constant -= view.frame.width view.layoutIfNeeded() } }
Objective-C已经在很多地方介绍了这一点,所以如果你可以阅读这些例子,只要在代码中进行search就可以更改代码中的NSLayoutConstraint。
如何在代码中编辑约束
(编辑以使其更加适用:通常约束条件应该是为了获得干净的用户体验而devise的,否则眼睛会感到困惑。
您可以通过在UIView.animateWithDuration(duration) { ... }
块中封装view.layoutIfneeded
来轻松地调整约束条件。