我在 UILabel 的文本末尾添加图像时遇到问题。如何检测标签中文本的大小,然后添加额外的空间并将图像插入其中?
问问题
2138 次
6 回答
1
最好的方法是拿一个UIView
。
UILabel
并UIImageView
在此上添加两者UIView
(根据您的要求给Fram)。
这UIView
到您的MainView中UIViewController
。
于 2013-03-19T14:59:16.043 回答
1
如果你不想使用 UIView。为什么不检查标签中字符串的长度。然后使用框架为您的图像添加一些额外的空间。[UILabel.text length] 返回长度。
于 2013-03-19T15:05:28.680 回答
1
- 如果您需要或只使用超级视图,请创建一些容器 UIView
- 放在
UILabel
那里UIImageView
[NSString sizeWithFont:]
使用或类似sizeWith...
方法计算文本的大小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 回答