我正在使用这段代码:
- (void)replaceTopConstraintOnView:(UIView *)view withConstant:(float)constant
{
[[[self contentView] constraints] enumerateObjectsUsingBlock:^(NSLayoutConstraint *constraint, NSUInteger idx, BOOL *stop) {
if ((constraint.firstItem == view) && (constraint.firstAttribute == NSLayoutAttributeLeft)) {
constraint.constant = constant;
}
}];
}
当我在标签中设置文本时,我将约束从 -100 更改为 10。
- (void)setText:(NSString *)text
{
[[self label] setText:text];
[self replaceTopConstraintOnView:[self label] withConstant:10];
[[self contentView] layoutIfNeeded];
}
这是我在初始化时配置标签约束的方式:
表格视图单元格方法的初始化:
UILabel *label = [[UILabel alloc] initWithFrame:CGRectZero];
[label setTranslatesAutoresizingMaskIntoConstraints:NO];
[NSLayoutConstraint constraintWithItem:[self label]
attribute:NSLayoutAttributeLeft
relatedBy:NSLayoutRelationEqual
toItem:[self containerView]
attribute:NSLayoutAttributeLeft
multiplier:1.0f
constant:-100];
所以它对我不起作用。我在这里不描述动画。但如果没有 UIView 动画块,它甚至无法工作。我已经将它的约束常量更改为 10,但我仍然没有看到标签。所以标签也有宽度和高度。如果我在开始时将约束设置为 10,我会看到我的标签。