oop*_*psi 11 cocoa-touch constraints ios
我有一个宽度约束为100的网页.
当用户单击按钮时,我想将约束更改为:200.
我试过这个:
NSLayoutConstraint *constrain = [NSLayoutConstraint
constraintWithItem:self.webPage
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:self.webPage
attribute:NSLayoutAttributeWidth
multiplier:1
constant:100];
[self.webPage addConstraint:constrain];
Run Code Online (Sandbox Code Playgroud)
但这引发了这个例外:"无法同时满足约束条件."
有任何想法吗?
Mat*_*uch 26
你有两个选择.
constant为200我会选择第一个选项.要获取引用@property,请为viewController 添加约束,并在创建时指定它.
如果要在xib或storyboard中创建约束,请将约束与IBOutlet连接连接到代码,类似于连接UILabel时的操作.
然后,您可以轻松调整约束的常量部分.
你也可以在这些方面更多地约束你:
NSLayoutConstraint *constraint = [NSLayoutConstraint
constraintWithItem:self.webPage
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1
constant:100];
Run Code Online (Sandbox Code Playgroud)
如果你想设置宽度没有toItem:set.
_myConstrain = [NSLayoutConstraint
constraintWithItem:self.webPage
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1
constant:100];
// add to superview! not to self.webPage
[self.view addConstraint:_myConstrain];
Run Code Online (Sandbox Code Playgroud)
如果您想稍后更改它:
_myConstrain.constant = 200.0f;
[self.view layoutIfNeeded]; // you may be able to call this on self.webPage
Run Code Online (Sandbox Code Playgroud)