1

我在 UILabel 的文本末尾添加图像时遇到问题。如何检测标签中文本的大小,然后添加额外的空间并将图像插入其中?

4

6 回答 6

1

最好的方法是拿一个UIView

UILabelUIImageView在此上添加两者UIView根据您的要求Fram)。

UIView到您的MainViewUIViewController

于 2013-03-19T14:59:16.043 回答
1

如果你不想使用 UIView。为什么不检查标签中字符串的长度。然后使用框架为您的图像添加一些额外的空间。[UILabel.text length] 返回长度。

于 2013-03-19T15:05:28.680 回答
1
  1. 如果您需要或只使用超级视图,请创建一些容器 UIView
  2. 放在UILabel那里UIImageView
  3. [NSString sizeWithFont:]使用或类似sizeWith...方法计算文本的大小
  4. UIImageView根据文本大小计算你的位置
于 2013-03-19T15:13:25.120 回答
1

我为此写了一些代码:

-(void) labelSizeGetter
{
    UILabel * mylabel=[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];

    float heigth=25.0;//max height value of label.

    NSString *yourString = @"My great text";

    mylabel.font =[UIFont fontWithName:@"Helvetica-Bold" size:12];

    [mylabel setText:yourString];

    CGSize s = [mylabel.text sizeWithFont:[UIFont systemFontOfSize:12] 
                        constrainedToSize:CGSizeMake(MAXFLOAT,heigth)
                            lineBreakMode:NSLineBreakByWordWrapping];

    // s is a size for text of label. just add 10 pix to width to make it more beautiful.

    NSLog(@"%@", NSStringFromCGSize(s));

    mylabel.frame=CGRectMake(0, 0, s.width+10, s.height);

    [self.view addSubview:mylabel];

    UIView * myimage=[[UIView alloc] initWithFrame:CGRectMake(mylabel.frame.origin.x+mylabel.frame.size.width , mylabel.frame.origin.y, 30, 30)];//create your images frame according to frame of your label

    myimage.backgroundColor =[UIColor colorWithPatternImage:[UIImage imageNamed:@"arti.png"]];

    [self.view addSubview:myimage];

}

我希望它有帮助

于 2013-03-19T15:34:06.417 回答
0

这是一个代码片段,可让您根据特定字体和特定字体大小调整大小。因此,您可以为标签设置框架,然后也可以设置图像视图。

- (CGSize)getSizeFromText:(NSString*)text {

    CGSize constrainedSize;

    constrainedSize.width = give maximum allowable width limit;

    constrainedSize.height = MAXFLOAT;

    CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:fontSize] constrainedToSize:constrainedSize lineBreakMode: UILineBreakModeWordWrap];

    return size;
}

希望这可以帮助您解决问题。

于 2013-03-19T15:11:31.577 回答
0

当使用给定字体呈现时,有一个类别NSString返回字符串的大小。有几种方法,其中最完整的是- (CGSize)sizeWithFont:(UIFont *)font minFontSize:(CGFloat)minFontSize actualFontSize:(CGFloat *)actualFontSize forWidth:(CGFloat)width lineBreakMode:(UILineBreakMode)lineBreakMode(请参阅Apple Docs)。

有了这些信息,您可能能够实现您想要做的事情。

于 2013-03-19T15:12:49.910 回答