在这个问题中,我要求一种截断字符串以适合给定UITextView的好方法.由于SDK没有直接提供的方法,我最终编写了下面的递归方法(仅通过以下公共方法调用).但是,除非我在计算字符串的高度时从字段宽度中减去软糖因子15(kFudgeFactor),否则这不起作用.如果我不这样做,返回的字符串对于字段来说实际上太长了,并且显示在它下面的额外行中.任何人都知道为什么,我应该使用什么而不是这个软糖因素?
#pragma mark Size string to fit the new view
#define kFudgeFactor 15.0
#define kMaxFieldHeight 9999.0
// recursive method called by the main API
-(NSString*) sizeStringToFit:(NSString*)aString min:(int)aMin max:(int)aMax
{
if ((aMax-aMin) <= 1)
{
NSString* subString = [aString substringToIndex:aMin];
return subString;
}
int mean = (aMin + aMax)/2;
NSString* subString = [aString substringToIndex:mean];
CGSize tallerSize = CGSizeMake(self.frame.size.width-kFudgeFactor,kMaxFieldHeight);
CGSize stringSize = [subString sizeWithFont:self.font constrainedToSize:tallerSize lineBreakMode:UILineBreakModeWordWrap];
if (stringSize.height <= self.frame.size.height)
return [self sizeStringToFit:aString min:mean max:aMax]; // too small
else
return …Run Code Online (Sandbox Code Playgroud)