ios7 - iOS 7-UITextView大小的字体以使所有文本适合 View (无滚动)

标签 ios7 resize uitextview sizewithfont

我试图找到一种不建议使用的方法来缩小textview的字体大小,以便所有文本都适合textview而无需滚动。

方法“ sizeWithFont”已被弃用,我想确保最佳实践,XCode表示要使用“ boundingRectWithSize”,但不确定如何使用此方法来缩小字体大小以适合所有文本。

有什么建议?
不,我不能使用UILabel代替。我需要使文本在顶部垂直对齐,而UILabel不会这样做。

这适用于iOS 7之前的版本:

CGFloat fontSize;
CGFloat minSize;
if([deviceType isEqualToString:@"iPad"] || [deviceType isEqualToString:@"iPad Simulator"]){
    fontSize = 40;
    minSize = 15;
}
else{
    fontSize = 18;
    minSize = 8;
}
while (fontSize > minSize)
{
    CGSize size = [quote sizeWithFont:[UIFont fontWithName:@"Interstate" size:fontSize] constrainedToSize:CGSizeMake(newView.frame.size.width, 10000)];

    if (size.height <= newView.frame.size.height) break;

    fontSize -= 1.0;
}

最佳答案

解决方案1

您只需将sizeWithFont: constrainedToSize:替换为即可解决您的问题:

boundingRectWithSize:CGSizeMake(newView.frame.size.width, FLT_MAX)
                options:NSStringDrawingUsesLineFragmentOrigin
             attributes:@{NSFontAttributeName:[UIFont fontWithName:@"Interstate" size:fontSize]}
                context:nil];


解决方案2

sizeThatFits方法可用于解决此问题,如下所示:

while (fontSize > minSize &&  [newView sizeThatFits:(CGSizeMake(newView.frame.size.width, FLT_MAX))].height >= newView.frame.size.height ) {
    fontSize -= 1.0;
    newView.font = [tv.font fontWithSize:fontSize];
}


我希望这些解决方案之一可以解决您的问题。干杯!

关于ios7 - iOS 7-UITextView大小的字体以使所有文本适合 View (无滚动),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23621536/

相关文章:

ios - UINavigationBar 显示为半透明而不是不透明的白色

iOS7 弹出或通知持续几秒钟

ios - 具有自定义形状导航栏的 UINavigationController

java - 更改 JBorderLayout 内 JTextField 的大小

iOS - UITextView + NSUndoManager

iphone - 如何根据 objective-c 中的内容设置UITextView的高度

iphone - 无法在 tableviewcell ios 7 上显示删除按钮

c++ - vector::resize 增加多少容量?

javascript - 使用 CSS 调整 CodeMirror 编辑器大小不起作用

ios - Objective-C : how to resize uitextview height with animation?