【问题标题】:iphone app custom images inside UILabelUILabel 中的 iphone 应用程序自定义图像
【发布时间】:2010-06-01 08:18:04
【问题描述】:

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

问候 阿亚兹阿拉维

【问题讨论】:

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


    【解决方案1】:

    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】:

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

      [_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】:

        我通过使用 iphone 和 UI textarea 支持的 unicode 笑脸解决了这个问题。所以我只是继续将 unicode 字符附加到字段中的文本,它继续向我显示图像。

        【讨论】:

          猜你喜欢
          • 2023-03-22
          • 1970-01-01
          • 1970-01-01
          • 2010-11-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多