NSString字体大小特定于框架宽度 [英] NSString font size specific to frame width
本文介绍了NSString字体大小特定于框架宽度的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用 drawRect
进行文本显示,并调用 NSString
。我正在尝试使用 sizeWithFont
实现默认字体大小为17的自动调整字体大小(缩小),并使用循环将不适合的字体大小减小1。宽度大小。谁能帮我实现这个目标?现在的示例很好,我将字体大小设置为17.0
I am using drawRect
for a text display, calling NSString
. I am trying to implement using sizeWithFont
to auto resizing font (shrinking) with default font size of 17 and using a loop to reduce the font size by 1 if it does not fit the size of width. Can anyone help me how to implement this? Example would be nice right now I just have the font size set to 17.0
[[self.string displayName] drawAtPoint:CGPointMake(xcoord, ycoord) withFont:[UIFont boldSystemFontOfSize:17.0]];
CGSize size = [[self.patient displayName] sizeWithFont:[UIFont boldSystemFontOfSize:17.0]];
max_current_y = size.height > max_current_y ? size.height : max_current_y;
xcoord = xcoord + 3.0f + size.width;
推荐答案
好吧。这是使用NSString为其返回字体的方法的修改版本:
OK never mind. Here's modified version of the same method that takes NSString for which to return a font:
-(UIFont*)getFontForString:(NSString*)string
toFitInRect:(CGRect)rect
seedFont:(UIFont*)seedFont{
UIFont* returnFont = seedFont;
CGSize stringSize = [string sizeWithAttributes:@{NSFontAttributeName : seedFont}];
while(stringSize.width > rect.size.width){
returnFont = [UIFont systemFontOfSize:returnFont.pointSize -1];
stringSize = [string sizeWithAttributes:@{NSFontAttributeName : returnFont}];
}
return returnFont;
}
在这里是这样称呼的:
NSString* stringToDraw = @"Test 123";
CGRect rect = CGRectMake(100., 100., 100., 200.);
UIFont* font = [self getFontForString:stringToDraw toFitInRect:rect seedFont:[UIFont systemFontOfSize:20]];
[stringToDraw drawInRect:rect withFont:font];
代码适用于iOS7 +
Code is for iOS7+
这篇关于NSString字体大小特定于框架宽度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文