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)
试试这个:
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)