iOS:根据UILabel的大小找到适合UILabel的正确字体大小
我有一个UILabel
其属性text
我想设置使用NSString
的文本段落。
我有一个数组,其中存储了一系列代表文本段落的字符。
该段落不必完全符合/包含在此UILabel
。 如果段落没有结束,我会转到下一个标签。
如果我有这个UILabel
160 X 240的矩形大小,我怎么能够确定正确的字体大小才能很好地填充UILabel
这个字符串?
是否有基于屏幕上rect的大小计算字体大小的数学方法?
例如:
UILabel *aLabel = [[UIlabel alloc] initwithFrame(CGRect){{0, 0}, 160, 240}]; aLabel.font = [UIFont fontWithName:@"Courier New" size:]; //(font unit in points) NSMutableString *aString = [[NSMutableString alloc] init]; //The following tries to fit the character one by one within the label rect based on //the width and height of the UILabel by appending String int index = 0; for(int x = 0; x < 240; x+=) //height of label (pixel unit) { for(int y = 0; y < 160; y+=) //width of label (pixel unit) { [aString appendWithString:[paragraphArray objectAtIndex:index]]; index++; } [aString appendWithString:@\n"]; //line break } aLabel.text = aString;
我怎样才能确定???的值? 是(即for循环的字体大小和像素大小)?
如果这不是执行此类任务的最佳方式,请另外建议我。
+(void)resizeFontForLabel:(UILabel*)aLabel{ // use font from provided label so we don't lose color, style, etc UIFont *font = aLabel.font; float lblWidth = aLabel.frame.size.width; float lblHeight = aLabel.frame.size.height; CGFloat fontSize = [font pointSize]; UIFont *newFont = font; TRC_DBG(@"%@", aLabel.text); CGFloat height = [aLabel.text sizeWithFont:font constrainedToSize:CGSizeMake(lblWidth,MAXFLOAT) lineBreakMode:aLabel.lineBreakMode].height; TRC_DBG(@"Label Height %f Constraint height %f", lblHeight, height); //Reduce font size while too large, break if no height (empty string) while (height > lblHeight && height != 0) { fontSize--; newFont = [UIFont fontWithName:font.fontName size:fontSize]; height = [aLabel.text sizeWithFont:newFont constrainedToSize:CGSizeMake(lblWidth,MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping].height; TRC_DBG(@"Constrained Height %f", height); }; TRC_DBG(@"Font size before adjustment %f", aLabel.font.pointSize); // Set the UILabel's font to the newly adjusted font. aLabel.font = newFont; TRC_DBG(@"Adjust to font size of %f", newFont.pointSize); [aLabel setNeedsLayout]; }
在故事板中,单击“调整”以适合并选择最小尺寸。
- Swift根据文本长度动态生长单元格
- iOS – 自定义UISearchBar的取消button
- UITabBarController + UINavigationController和更多选项卡黑屏问题
- 我需要调用UICollectionView的dequeueCell:从数据源的cellForPath:?
- 不能再翻转层,CALayer,CATransform3DRotate。
- 核心数据对象在不同的tableView部分
- 我的iPhonevideo只能在肖像模式下播放
- 如何在viewDidLayoutSubviews中获得正确的视图高度?
- 在Grand Central Dispatch中使用dispatch_sync