如何在 iPhone 4S Swift 上动态调整 UITextView 中的文本大小
How to dynamically resize text size in a UITextView on iPhone 4S Swift
我的应用显示了一个字符串数组,它通过按下按钮来循环访问。它在除 iPhone 4S 以外的所有设备上都能完美运行。问题是一些字符串元素太长无法放入 UITextView,您必须滚动才能阅读其余部分,这是我不想要的。
所以,我的问题是,当它不适合所有字符串元素时,如何动态收缩属性文本以适应受约束的 UITextView?
如果可行,请告诉我,
谢谢大家。
当您可以使用 UILabel
时,您为什么要使用 UITextView
。 UITextView
没有自动缩放 属性。使用 UILabel
您可以设置行数,它有 Autoshrink
属性 ,您可以在其中设置 Minimum font scale
或 Minimum font size
这将相应地调整您的文本 UILabel
大小。或者只允许使用 UITextView
.
滚动
在您的 textview 类别中使用它 class 以根据宽度调整字体大小。
-(BOOL)sizeFontToFit:(NSString*)aString minSize:(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 = [aString sizeWithFont:self.font constrainedToSize:tallerSize lineBreakMode:UILineBreakModeWordWrap];
while (stringSize.height >= self.frame.size.height)
{
if (fontSize <= aMinFontSize) // it just won't fit
return NO;
fontSize -= 1.0;
self.font = [self.font fontWithSize:fontSize];
tallerSize = CGSizeMake(self.frame.size.width-fudgeFactor,kMaxFieldHeight);
stringSize = [aString sizeWithFont:self.font constrainedToSize:tallerSize lineBreakMode:UILineBreakModeWordWrap];
}
return YES;
}
我的应用显示了一个字符串数组,它通过按下按钮来循环访问。它在除 iPhone 4S 以外的所有设备上都能完美运行。问题是一些字符串元素太长无法放入 UITextView,您必须滚动才能阅读其余部分,这是我不想要的。
所以,我的问题是,当它不适合所有字符串元素时,如何动态收缩属性文本以适应受约束的 UITextView?
如果可行,请告诉我, 谢谢大家。
当您可以使用 UILabel
时,您为什么要使用 UITextView
。 UITextView
没有自动缩放 属性。使用 UILabel
您可以设置行数,它有 Autoshrink
属性 ,您可以在其中设置 Minimum font scale
或 Minimum font size
这将相应地调整您的文本 UILabel
大小。或者只允许使用 UITextView
.
在您的 textview 类别中使用它 class 以根据宽度调整字体大小。
-(BOOL)sizeFontToFit:(NSString*)aString minSize:(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 = [aString sizeWithFont:self.font constrainedToSize:tallerSize lineBreakMode:UILineBreakModeWordWrap];
while (stringSize.height >= self.frame.size.height)
{
if (fontSize <= aMinFontSize) // it just won't fit
return NO;
fontSize -= 1.0;
self.font = [self.font fontWithSize:fontSize];
tallerSize = CGSizeMake(self.frame.size.width-fudgeFactor,kMaxFieldHeight);
stringSize = [aString sizeWithFont:self.font constrainedToSize:tallerSize lineBreakMode:UILineBreakModeWordWrap];
}
return YES;
}