问题是在Swift中以编程方式移动“InfoView”(UIView)。

Storyboard 中存在以下约束(参见图片):

现在,我想上下移动“MyView”中的“InfoView”。

我试过了:

@IBOutlet weak var infoTextLabel: UILabel!
@IBOutlet weak var infoTextLabelView: UIView!

// set infoTextLabel color
self.infoTextLabel.textColor = UIColor.blackColor()
// set infoTextLabel text
self.infoTextLabel.text = "hello"
// unhide infoTextLabel
self.infoTextLabel.hidden = false

// For the moving in Y-direction, I tried this - but does not work !!!!!!!
self.infoTextLabelView.frame.origin.y += 200

自动布局约束可以发挥作用吗?如何以编程方式克服这些困难。还是frame.origin.y方法错误?

感谢任何帮助!

最佳答案

使用约束时,您永远不想直接设置 View 的框架。而是重新配置约束,然后让自动布局引擎为您设置 View 的框架。在 View Controller 中创建IBOutlet,以存储对“中心Y路线约束”的引用。确保将其连接到 Storyboard 或xib中。

@IBOutlet var yConstraint: NSLayoutConstraint

然后,您可以设置约束的constant属性以使其偏离Y位置(正数将其向下移动,负数将其向上移动)。
yConstraint.constant = 200

这将使您的 View 向下移动200点。

08-05 19:36