iOS:设置故事板后编辑视图的约束
iOS: Editing constraints for views after setting them up storyboard
朋友们,美好的一天!
我目前正在开发我的第一个应用程序,但我无法解决自动布局的一个问题。
我必须在两个按钮之间设置约束。但它们必须根据显示分辨率进行更改:不是恒定的偏移量。
据我所知,我无法在 IB 中执行此操作,因此我使用如下代码以编程方式构建了约束:
[self.view addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"H:|-horizontalOffset-[button1(>=102)]-buttonsInterval-[button2(>=102)]-horizontalOffset-|"
options:0
metrics:metrics
views:buttons]];
如果我在代码中创建按钮,它工作正常,但如果按钮在故事板中创建,它就不起作用。
我在这里进行更新:
- (void)updateViewConstraints
{
[super updateViewConstraints];
[self setMyConstraintsForScreen:self.view];
}
但是与之前为此按钮创建的约束总是存在一些冲突 - xcode 自己创建它们或者我在 IB 中手动设置它们。
当我尝试从根视图中删除所有约束时,出现此错误:
'The layout constraints still need update after sending -updateViewConstraints to <ViewController: 0x7ffa6a5497c0>.
ViewController or one of its superclasses may have overridden -updateViewConstraints without calling super or sending -updateConstraints to the view. Or, something may have dirtied layout constraints in the middle of updating them. Both are programming errors.'
不过我确实调用了 [super updateViewConstraints]...我也没有将 updateViewConstraints 发送到任何特定视图。
有人有解决办法吗?
基本上我需要做一件简单的事情:为内置故事板的视图设置变量约束。
谢谢!
您在 class(代码)中定义了 NSLayoutConstraint 类型的 IBOutlet,然后在 IB 中将其与您的约束定义连接起来。
然后在您的代码中您可以更改约束条件,例如
constraint.constant = 123;
[view layoutIfNeeded];
朋友们,美好的一天!
我目前正在开发我的第一个应用程序,但我无法解决自动布局的一个问题。 我必须在两个按钮之间设置约束。但它们必须根据显示分辨率进行更改:不是恒定的偏移量。
据我所知,我无法在 IB 中执行此操作,因此我使用如下代码以编程方式构建了约束:
[self.view addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"H:|-horizontalOffset-[button1(>=102)]-buttonsInterval-[button2(>=102)]-horizontalOffset-|"
options:0
metrics:metrics
views:buttons]];
如果我在代码中创建按钮,它工作正常,但如果按钮在故事板中创建,它就不起作用。 我在这里进行更新:
- (void)updateViewConstraints
{
[super updateViewConstraints];
[self setMyConstraintsForScreen:self.view];
}
但是与之前为此按钮创建的约束总是存在一些冲突 - xcode 自己创建它们或者我在 IB 中手动设置它们。
当我尝试从根视图中删除所有约束时,出现此错误:
'The layout constraints still need update after sending -updateViewConstraints to <ViewController: 0x7ffa6a5497c0>.
ViewController or one of its superclasses may have overridden -updateViewConstraints without calling super or sending -updateConstraints to the view. Or, something may have dirtied layout constraints in the middle of updating them. Both are programming errors.'
不过我确实调用了 [super updateViewConstraints]...我也没有将 updateViewConstraints 发送到任何特定视图。
有人有解决办法吗? 基本上我需要做一件简单的事情:为内置故事板的视图设置变量约束。
谢谢!
您在 class(代码)中定义了 NSLayoutConstraint 类型的 IBOutlet,然后在 IB 中将其与您的约束定义连接起来。
然后在您的代码中您可以更改约束条件,例如
constraint.constant = 123;
[view layoutIfNeeded];