为UILabel添加额外空间以插入图像

时间:2013-03-19 14:56:41

标签: ios objective-c xcode uilabel

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

6 个答案:

答案 0 :(得分:1)

最佳方式是UIView

并在此UILabel上添加UIImageViewUIView(根据您的要求 Fram )。

UIViewUIViewController MainView

答案 1 :(得分:1)

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

答案 2 :(得分:1)

  1. 如果您需要或仅使用superview
  2. ,请创建一些容器UIView
  3. 放置UILabelUIImageView
  4. 使用[NSString sizeWithFont:]或类似sizeWith...方法
  5. 计算文字大小
  6. 根据文字大小计算UIImageView的位置

答案 3 :(得分: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];

}

我希望它有所帮助

答案 4 :(得分: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;
}

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

答案 5 :(得分:0)

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

通过这些信息,您可以实现自己想要的目标。