【发布时间】:2010-06-01 08:18:04
【问题描述】:
我有一个场景,我想找到 UILabel 中的文本在哪里结束并获取它的 x 和 y 坐标。然后我需要在 UILabel 文本的最后一个单词之后插入图像。当我单击应用程序中的特定图像时,将触发此事件。如何找到 UILabel 文本的结束字符的 x 和 y 是什么?
问候 阿亚兹阿拉维
【问题讨论】:
标签: iphone objective-c iphone-sdk-3.0 uilabel
我有一个场景,我想找到 UILabel 中的文本在哪里结束并获取它的 x 和 y 坐标。然后我需要在 UILabel 文本的最后一个单词之后插入图像。当我单击应用程序中的特定图像时,将触发此事件。如何找到 UILabel 文本的结束字符的 x 和 y 是什么?
问候 阿亚兹阿拉维
【问题讨论】:
标签: iphone objective-c iphone-sdk-3.0 uilabel
Yang 的方法看起来不错,但是如果您出于某种原因不想调整标签大小(文本居中,文本会改变等),您可以使用 NSString 中的 UIKit 添加。当然,这只适用于单行标签。
CGSize textSize = [label.text sizeWithFont:label.font];
CGFloat imgX;
CGFloat imgY = label.frame.origin.y - imageView.frame.size.height;
if(label.textAlignment == UITextAlignmentLeft) {
imgX = label.frame.origin.x + textSize.width;
} else if(label.textAlignment == UITextAlignmentCenter) {
imgX = label.frame.origin.x + textSize.width / 2.0;
} else if(label.textAlignment == UITextAlignmentRight) {
// This part really depends on what you want to do in this case
imgX = label.frame.origin.x
+ label.frame.size.width
- textSize.width
- imageView.frame.size.width;
}
imageView.frame = CGRectMake(imgX,
imgY,
imageView.frame.size.width,
imageView.frame.size.height);
【讨论】:
您可以调整标签的大小,然后获取坐标并将它们用于您的图像视图:
[_label sizeToFit];
CGFloat x = _label.frame.origin.x + _label.frame.size.width;
CGFloat y = _label.frame.origin.y + _label.frame.size.height;
_imageView.frame = CGRectMake(x, y, imageWidth, imageHeight);
(请注意,使用这种方法,您会遇到最后一行不是最长的多行标签的问题。)
【讨论】:
我通过使用 iphone 和 UI textarea 支持的 unicode 笑脸解决了这个问题。所以我只是继续将 unicode 字符附加到字段中的文本,它继续向我显示图像。
【讨论】: