我的应用程序显示了一个字符串数组,按下按钮可以迭代。它适用于除iPhone 4S以外的所有设备。问题是一些字符串元素很长,以适应UITextView,你必须滚动阅读其余的,我不想要。
所以,我的问题是当它不适合所有的字符串元素时,如何动态缩小属性文本以适应受约束的UITextView?
如果可能,请告诉我, 谢谢你们。
答案 0 :(得分:3)
为什么在使用$system == 'Malaria'
时可以使用UITextView
。 UILabel
没有自动缩放属性。使用UITextView
,您可以设置行数,并且它具有UILabel
属性,您可以在其中设置Autoshrink
或Minimum font scale
,以便根据Minimum font size
大小调整文字。或者只允许使用UILabel
进行滚动。
答案 1 :(得分:0)
在textview类别类中使用此选项以适合字体大小取决于宽度。
-(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;
}