通过计算的文本宽度,由于小数四舍五入引起的文字显示不全问题:
通过计算的文本宽度,若出现小数,而手机的屏幕有最低分辨率(BG_1PX (1.0f / [UIScreen mainScreen].scale)),标签的宽度只能大于文本实际的宽度才能正常显示,否则会出现显示不出来的问题。
解决办法是:发现计算的文本宽度带小数(小数点后全是零不算)就直接把计算出的宽度加1像素。
具体代码:
NSDictionary *attributes = @{NSFontAttributeName :font}; //字体属性,设置字体的font
CGSize maxSize = CGSizeMake(FULL_WIDTH, FULL_HEIGHT); //设置字符串的宽高
CGSize size = [maxTitle boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil].size;
CGFloat labelWidth = size.width;
if((labelWidth != ((NSInteger)labelWidth)))
{
labelWidth = labelWidth + 0.5;
}
出问题的运行数据如下:


出问题的效果如下


博客指出在iOS中,通过计算的文本宽度若有小数,因手机屏幕有最低分辨率,标签宽度需大于文本实际宽度才能正常显示,否则会显示不全。解决办法是计算的文本宽度带非零小数时,直接将宽度加1像素,并给出了相关运行数据和效果。
8377

被折叠的 条评论
为什么被折叠?



