UILabel里面的iPhone应用程序自定义图像

时间:2010-06-01 08:18:04

标签: iphone objective-c iphone-sdk-3.0 uilabel

我有一个场景,我想找到UILabel中文本的结尾,并根据x和y得到它的坐标。然后我需要在UILabel文本的最后一个单词之后插入图像。当我点击app中的特定图片时,将触发此事件。如何找到UILabel文本的结尾字符的x和y是什么?

此致 ayaz alavi

3 个答案:

答案 0 :(得分:2)

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);

答案 1 :(得分:1)

您可以调整标签大小,然后获取坐标并将其用于图像视图:

[_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);

(请注意,使用这种方法,您会遇到多行标签的问题,其中最后一行不是最长的。)

答案 2 :(得分:0)

我通过使用iphone和UI textarea支持的unicode表情解决了这个问题。所以我只是继续在字段中的文本中添加unicode字符,并继续向我显示图像。