使用从左到右的约束更改UILabel位置动画

时间:2015-02-25 21:35:01

标签: ios ios7 autolayout nsautolayout ios-autolayout

我正在使用此代码:

- (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];
}

以下是我在初始化时配置标签constarint的方法:

初始化表视图单元格方法:

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,我会看到我的标签。

0 个答案:

没有答案