代码之家  ›  专栏  ›  技术社区  ›  Ayaz Alavi

iLabel内的iphone应用程序自定义图像

  •  1
  • Ayaz Alavi  · 技术社区  · 16 年前

    我有一个场景,我想找到UILabel中的文本结束的地方,并得到它的x和y坐标。然后我需要在UILabel文本的最后一个单词后面插入图像。当我单击应用程序中的特定图像时,将触发此事件。如何找到UILabel文本结尾字符的x和y?

    3 回复  |  直到 16 年前
        1
  •  2
  •   Can Berk Güder Pugalmuni    16 年前

    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);
    
        2
  •  1
  •   Yang Meyer    16 年前

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

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

        3
  •  0
  •   Ayaz Alavi    16 年前