尝试根据文本长度使用 UILabel 移动图像,约束不起作用

Posted

技术标签:

【中文标题】尝试根据文本长度使用 UILabel 移动图像,约束不起作用【英文标题】:Trying to move image with UILabel based on text length, constraints do not work 【发布时间】:2014-09-01 21:02:29 【问题描述】:

我正在尝试让图像与文本标签对齐,如下所示:

为此,我使用约束。我将箭头绑定到右边缘,将右侧标记为箭头,将图像右侧标记为左侧。代码如下:

    [self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.disclosureIndicator attribute:NSLayoutAttributeRight
                                                          relatedBy:NSLayoutRelationEqual toItem:self.view
                                                          attribute:NSLayoutAttributeRight multiplier:1.0 constant:-15.0]];

[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.purposeLabel attribute:NSLayoutAttributeRight
                             relatedBy:NSLayoutRelationEqual toItem:self.disclosureIndicator
                             attribute:NSLayoutAttributeLeft multiplier:1.0 constant:-10.0]];

NSLayoutConstraint *imgConstraint = [NSLayoutConstraint constraintWithItem:self.purposeImage attribute:NSLayoutAttributeRight
                                                                 relatedBy:NSLayoutRelationEqual toItem:self.purposeLabel
                                                                 attribute:NSLayoutAttributeLeft multiplier:1.0 constant:-4.0];
[self.view addConstraint:imgConstraint];

但是当我尝试减少标签文本长度和 sizeToFit 时,它不起作用,这可以从框架中看出:

如果我将imgConstraintpriority 减少到小于 250,sizeToFit 实际有效,标签框会发生变化,但图像根本不会移动。

我能做些什么来解决这个问题?

【问题讨论】:

代码中的三个约束不足以定义所有元素的所有尺寸。请发布所有约束代码。我还建议检查视觉约束语言——它会比手动创建单个约束语言更简单、更清晰。 - developer.apple.com/library/ios/documentation/UserExperience/… 【参考方案1】:

我忘记删除自动调整大小约束,如下所示:

self.purposeImage.translatesAutoresizingMaskIntoConstraints = NO;

当我这样做时,一切正常。

【讨论】:

以上是关于尝试根据文本长度使用 UILabel 移动图像,约束不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何使用自动布局在 iOS 中根据文本长度更改 UILabel 宽度

根据 UILabel 文本和图像自动调整单元格大小,例如聊天

UITextView高度调整

根据实际可见字母高度在 UILabel 中垂直居中文本

带有adjustsFontSizeToFitWidth的多行UILabel

缩小UILabel中的文本