我的iOS 7应用程序出现问题
我使用以下方法计算我的标签尺寸:
CGSize constraint = CGSizeMake(275, 141);
CGSize size;
size = [_rtLabelQuestion.plainText sizeWithFont:[UIFont fontWithName:@"KGWhattheTeacherWants" size:intFont] constrainedToSize:constraint lineBreakMode:NSLineBreakByTruncatingTail];
然后使用以下方式放置我的标签框架
_rtLabelQuestion.frame = CGRectMake(aLabelTemp.frame.origin.x, aLabelTemp.frame.origin.y, size.width + 2 , size.height + 10);
但是在iOS 7上CGSize
的宽度和高度总是小于intFont像素,我已经工作了2天没有解决方案,请帮助,谢谢!
答案 0 :(得分:1)
您传入size:
的{{1}}是该字体的磅值。
从-[UIFont fontWithName:size:]
返回的大小是字符串中布局字形的实际大小。
如果您希望给定的字符串是特定的大小,在特定的面中,您可能需要进行牛顿方法类型的迭代,您可以在其中更改您传入的点大小,直到布局的大小关闭为止足够你想要的。 (在一般情况下,我不希望这样的操作很快,BTW。)它可能看起来像这样:
-[NSString sizeWithFont:constrainedToSize:lineBreakMode:]
PS:NSString* theString = @"FOOBAR";
CGSize constraint = CGSizeMake(275, 12);
CGFloat desiredHeight = 12.0;
CGFloat pointSize = desiredHeight;
CGFloat actualHeight = 0;
do {
CGSize size = [theString sizeWithFont: [UIFont fontWithName:@"Helvetica" size: pointSize] constrainedToSize: constraint lineBreakMode:NSLineBreakByTruncatingTail];
actualHeight = size.height;
CGFloat ratio = actualHeight / desiredHeight;
pointSize = pointSize / ratio;
} while (fabs(actualHeight - desiredHeight) > 0.01);
在iOS7中已弃用。编译器告诉我改为使用-[NSString sizeWithFont:constrainedToSize:lineBreakMode:]
。使用新推荐的方法,它可能如下所示:
-boundingRectWithSize:options:attributes:context:]
答案 1 :(得分:0)
尝试使用ceil确保舍入为整数:
_rtLabelQuestion.frame = CGRectMake(aLabelTemp.frame.origin.x, aLabelTemp.frame.origin.y, ceil(size.width) + 2 , ceil(size.height) + 10);
答案 2 :(得分:0)
CGSize viewwidth;
viewwidth=[[UIScreen mainScreen] bounds].size;
这将帮助您使用cgsize获取设备当前分辨率。
viewwidth.width or viewwidth.height
如上所述你可以使用它。以及如下代码
rightslide=[[UIView alloc]initWithFrame:CGRectMake(0,0, viewwidth.width, viewwidth.height)];