尝试根据文本长度使用 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 时,它不起作用,这可以从框架中看出:
如果我将imgConstraint
priority 减少到小于 250,sizeToFit 实际有效,标签框会发生变化,但图像根本不会移动。
我能做些什么来解决这个问题?
【问题讨论】:
代码中的三个约束不足以定义所有元素的所有尺寸。请发布所有约束代码。我还建议检查视觉约束语言——它会比手动创建单个约束语言更简单、更清晰。 - developer.apple.com/library/ios/documentation/UserExperience/… 【参考方案1】:我忘记删除自动调整大小约束,如下所示:
self.purposeImage.translatesAutoresizingMaskIntoConstraints = NO;
当我这样做时,一切正常。
【讨论】:
以上是关于尝试根据文本长度使用 UILabel 移动图像,约束不起作用的主要内容,如果未能解决你的问题,请参考以下文章
如何使用自动布局在 iOS 中根据文本长度更改 UILabel 宽度
根据 UILabel 文本和图像自动调整单元格大小,例如聊天