iOS 8 boundingRectWithSize 计算错误的文本大小

标签 ios xcode ios8 uitextview

我有一个长度会改变的字符串。我有一个固定宽度和高度的 textView。我想找到适合这些范围的最大字体大小。我使用 boundingRectWithSize。我假设一旦它给我一个大于我的 testRect 的值,我就可以降低字体,我应该很好。但是字符串对于我的 textView 来说太大了。即使 testRect.size.height 低于我的 textView.frame.size.height,我总是必须将它降低 2-4 点。

NSString *testString = @"This is a test string. Does it get biger?";

CGFloat height = self.textView.frame.size.height;
CGFloat width = self.textView.frame.size.width;
CGSize testSize = CGSizeMake(width, height);

CGFloat fontSize = 15;

NSDictionary *attrsDictionary;
CGRect testRect;

int i = 0;
while (i == 0) {
    attrsDictionary = @{NSFontAttributeName: [UIFont fontWithName:@"Helvetica" size:fontSize]};

    testRect = [testString boundingRectWithSize:testSize options:NSStringDrawingUsesLineFragmentOrigin attributes:attrsDictionary context:nil];

    if (testRect.size.height < testSize.height) {
        fontSize++;
    } else {
        fontSize--;
        self.textView.font = [UIFont fontWithName:@"Helvetica" size:fontSize];
        self.textView.text = testString;
        i = 1;
    }
}

最佳答案

当您拥有完美无瑕的字体时,您的方法应该会奏效。 不幸的是,完美的字体很少见,甚至系统字体通常也不是。 这意味着您必须自己找到所需的字体调整...

关于iOS 8 boundingRectWithSize 计算错误的文本大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27155468/

相关文章:

iOS 8 快速关闭键盘

objective-c - XCode Debugger( Debug模式项目)在某一行没有断点停止,Profiler 在同一行崩溃

android - 我可以在 Android 或基于 Web 的应用程序上使用 CloudKit 吗?

ios - BLE iOS后台广告

ios - 如何在附加到 iOS 的 lldb 中手动生成核心转储(或等效文件)

xcode - 使用 Applescript 自动化 Xcode

ios - 我如何支持 iOS7 上的自调整单元格?

xcode - 使用物理静音 iPhone 按钮使 AVFoundation 声音静音

ios - 为什么我不能更改 UILabel 的框架?

iphone - 如何从 NSNotification 对象获取数据?