iOS 8 xib拉的 UILabel 能自适应么?怎么自适应
展开全部
UILabel自适应里面的文字,自动调整宽度和高度:
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0,0,0,0)];//必须是这组值,这个frame是初设的,没关系,后面还会重新设置其size。
[label setNumberOfLines:0]; //必须是这组值
NSString *s = @"这个frame是初设的,没关系,后面还会重新设置其size。这个frame是初设的,没关系,后面还会重新设置其size。这个frame是初设的,没关系,后面还会重新设置其size。这个frame是初设的,没关系,后面还会重新设置其size。这个frame是初设的,没关系,后面还会重新设置其size。这个frame是初设的,没关系,后面还会重新设置其size。这个frame是初设的,没关系,后面还会重新设置其size。";
UIFont *font = [UIFont fontWithName:@"Arial" size:12];
CGSize size = CGSizeMake(320,2000);
CGSize labelsize = [s sizeWithFont:font constrainedToSize:size lineBreakMode:UILineBreakModeWordWrap];
label.frame = CGRectMake(0.0, 0.0, labelsize.width, labelsize.height );
label.backgroundColor = [UIColor purpleColor];
label.textColor = [UIColor blackColor];
label.text = s;
label.font = font;
....//using the label. Such as add it to the super view.
[label release];//release the correct object.
下面代码获取NSString写进单行的宽度与高度:
CGSize singleLineStringSize = [s sizeWithFont:font];
ps:需要检查其执行效率。
v
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0,0,0,0)];//必须是这组值,这个frame是初设的,没关系,后面还会重新设置其size。
[label setNumberOfLines:0]; //必须是这组值
NSString *s = @"这个frame是初设的,没关系,后面还会重新设置其size。这个frame是初设的,没关系,后面还会重新设置其size。这个frame是初设的,没关系,后面还会重新设置其size。这个frame是初设的,没关系,后面还会重新设置其size。这个frame是初设的,没关系,后面还会重新设置其size。这个frame是初设的,没关系,后面还会重新设置其size。这个frame是初设的,没关系,后面还会重新设置其size。";
UIFont *font = [UIFont fontWithName:@"Arial" size:12];
CGSize size = CGSizeMake(320,2000);
CGSize labelsize = [s sizeWithFont:font constrainedToSize:size lineBreakMode:UILineBreakModeWordWrap];
label.frame = CGRectMake(0.0, 0.0, labelsize.width, labelsize.height );
label.backgroundColor = [UIColor purpleColor];
label.textColor = [UIColor blackColor];
label.text = s;
label.font = font;
....//using the label. Such as add it to the super view.
[label release];//release the correct object.
下面代码获取NSString写进单行的宽度与高度:
CGSize singleLineStringSize = [s sizeWithFont:font];
ps:需要检查其执行效率。
v
大雅新科技有限公司
2024-11-19 广告
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,...
点击进入详情页
本回答由大雅新科技有限公司提供
展开全部
-(CGFloat)heightForString:(NSString *)string fontSize:(float)fontSize andWidth:(float)width
{
if (string==nil) {
return 0;
}
float dev=[[[UIDevice currentDevice]systemVersion]floatValue];
if (dev>=7.0) {
if ((NSNull *)string == [NSNull null]) {
return 0;
}
if (string!=nil && string.length>1) {
UIFont * tfont = [UIFont systemFontOfSize:fontSize];
CGSize size = CGSizeMake(width,CGFLOAT_MAX);
NSDictionary * tdic = [NSDictionary dictionaryWithObjectsAndKeys:tfont,NSFontAttributeName,nil];
CGSize actualsize =[string boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingTruncatesLastVisibleLine|NSStringDrawingUsesFontLeading attributes:tdic context:nil].size;
return actualsize.height;
}
return 0;
}
else {
if (string!=nil && string.length>1) {
CGSize sizeToFit = [string sizeWithFont:[UIFont systemFontOfSize:fontSize] constrainedToSize:CGSizeMake(width, CGFLOAT_MAX) lineBreakMode:NSLineBreakByWordWrapping];//此处的换行类型(lineBreakMode)可根据自己的实际情况进行设置
return sizeToFit.height;
}
return 0;
}
}
上面的代码就可以。还需设置下label的 numberofline= 0 breakMode 以及 重新设置label.frame 如果在tableview上要重新设置cell的高度.
{
if (string==nil) {
return 0;
}
float dev=[[[UIDevice currentDevice]systemVersion]floatValue];
if (dev>=7.0) {
if ((NSNull *)string == [NSNull null]) {
return 0;
}
if (string!=nil && string.length>1) {
UIFont * tfont = [UIFont systemFontOfSize:fontSize];
CGSize size = CGSizeMake(width,CGFLOAT_MAX);
NSDictionary * tdic = [NSDictionary dictionaryWithObjectsAndKeys:tfont,NSFontAttributeName,nil];
CGSize actualsize =[string boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingTruncatesLastVisibleLine|NSStringDrawingUsesFontLeading attributes:tdic context:nil].size;
return actualsize.height;
}
return 0;
}
else {
if (string!=nil && string.length>1) {
CGSize sizeToFit = [string sizeWithFont:[UIFont systemFontOfSize:fontSize] constrainedToSize:CGSizeMake(width, CGFLOAT_MAX) lineBreakMode:NSLineBreakByWordWrapping];//此处的换行类型(lineBreakMode)可根据自己的实际情况进行设置
return sizeToFit.height;
}
return 0;
}
}
上面的代码就可以。还需设置下label的 numberofline= 0 breakMode 以及 重新设置label.frame 如果在tableview上要重新设置cell的高度.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询