Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios TableViewCell内标签的NSLayoutConstraint_Ios_Iphone_Xcode_Autolayout - Fatal编程技术网

Ios TableViewCell内标签的NSLayoutConstraint

Ios TableViewCell内标签的NSLayoutConstraint,ios,iphone,xcode,autolayout,Ios,Iphone,Xcode,Autolayout,我有一个内置标签的tableViewCell。假设在这种情况下我不想创建IBOutlet。我想根据条件向标签添加一个约束,以便在条件为真时标签向下移动10像素。更准确地说,我想通过代码实现下图中的约束 我试过了 NSLayoutConstraint *myConstraint = [NSLayoutConstraint constraintWithItem:amountLabel attribute:NSLayoutAttributeTop

我有一个内置标签的tableViewCell。假设在这种情况下我不想创建IBOutlet。我想根据条件向标签添加一个约束,以便在条件为真时标签向下移动10像素。更准确地说,我想通过代码实现下图中的约束

我试过了

NSLayoutConstraint *myConstraint = [NSLayoutConstraint constraintWithItem:amountLabel attribute:NSLayoutAttributeTop
                                   relatedBy:NSLayoutRelationEqual toItem:cell.superview attribute:NSLayoutAttributeTop
                                   multiplier:1.0 constant:+10];
[amountLabel addConstraint:myConstraint];

但毫无效果。任何帮助都将不胜感激。:)

我认为必须将该约束添加到superview才能使其工作(始终将约束添加到最顶层视图或最近的公共祖先视图)

我发现使用类别库在代码中处理约束要容易得多。我最喜欢的是Richard Turton制作的:

我想你会发现使用这个添加约束更直观

示例

[amountLabel pinEdge:NSLayoutAttributeTop toEdge:NSLayoutAttributeTop ofView:superView inset:10];

Superview.Top
应该指的是
amountLabel.Superview
,而不是
cell.Superview
。您是否调用了setNeedUpdateConstraints和updateConstraintsIfNeeded?在处理代码中的自动布局约束时,
UIView
上有几个类别可以简化您的工作。“我用的是,我觉得很方便。”Wain我也用cell.superView试过。它不起作用。当然,答案补充道。如果你问我,语义要比使用苹果API直观得多;方法,因为您正在认真地与amountLabel的SuperViews合作,@jrturton制作的类别使自动布局对我来说变得非常容易,如果他住得离我很近,我会给他买一杯啤酒或给他一个拥抱(当然,根据他的喜好)。或者两者兼而有之:-德诺啤酒,我会拥抱任何人。