在UITextView中调整字体大小

She*_*lam 5 iphone cocoa-touch objective-c uitextview ipad

如果文本太多,有没有办法缩小UITextView中的字体大小?与UILabel相似?

Jan*_*les 12

接受的答案的问题是你必须猜测填充字段所需的字符数(字符串的长度),并且字体与字体不同.这样的东西,UITextView上的一个类别,应该可以工作.

#import "UITextView+Size.h"

#define kMaxFieldHeight 1000

@implementation UITextView (Size)

-(BOOL)sizeFontToFitMinSize:(float)aMinFontSize maxSize:(float)aMaxFontSize {

float fudgeFactor = 16.0;
float fontSize = aMaxFontSize;

self.font = [self.font fontWithSize:fontSize];

CGSize tallerSize = CGSizeMake(self.frame.size.width-fudgeFactor,kMaxFieldHeight);
CGSize stringSize = [self.text sizeWithFont:self.font constrainedToSize:tallerSize lineBreakMode:UILineBreakModeWordWrap];

while (stringSize.height >= self.frame.size.height) {

    if (fontSize <= aMinFontSize) // it just won't fit, ever
        return NO;

    fontSize -= 1.0;
    self.font = [self.font fontWithSize:fontSize];
    tallerSize = CGSizeMake(self.frame.size.width-fudgeFactor,kMaxFieldHeight);
    stringSize = [self.text sizeWithFont:self.font constrainedToSize:tallerSize lineBreakMode:UILineBreakModeWordWrap];
}

return YES; 
}

@end
Run Code Online (Sandbox Code Playgroud)


Jac*_*kin 8

试试这个:

NSInteger lengthThreshold = 200;
if( [ textView.text length ] > lengthThreshold ) {
    NSInteger newSize = ... //calculate new size based on length

    [ textView setFont: [ UIFont systemFontOfSize: newSize ]];
}
Run Code Online (Sandbox Code Playgroud)