Ios TableViewCell内标签的NSLayoutConstraint
我有一个内置标签的tableViewCell。假设在这种情况下我不想创建IBOutlet。我想根据条件向标签添加一个约束,以便在条件为真时标签向下移动10像素。更准确地说,我想通过代码实现下图中的约束 我试过了Ios TableViewCell内标签的NSLayoutConstraint,ios,iphone,xcode,autolayout,Ios,Iphone,Xcode,Autolayout,我有一个内置标签的tableViewCell。假设在这种情况下我不想创建IBOutlet。我想根据条件向标签添加一个约束,以便在条件为真时标签向下移动10像素。更准确地说,我想通过代码实现下图中的约束 我试过了 NSLayoutConstraint *myConstraint = [NSLayoutConstraint constraintWithItem:amountLabel attribute:NSLayoutAttributeTop
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制作的类别使自动布局对我来说变得非常容易,如果他住得离我很近,我会给他买一杯啤酒或给他一个拥抱(当然,根据他的喜好)。或者两者兼而有之:-德诺啤酒,我会拥抱任何人。