Ios7 iOS 7-UITextView大小字体,可将所有文本放入视图中(无滚动)
我试图找到一种不推荐使用的方法来缩小文本视图的字体大小,这样所有文本都可以在文本视图中显示,而无需滚动 不推荐使用“sizeWithFont”方法,我希望确保最佳实践,XCode说使用“boundingRectWithSize”,但不确定如何使用它来缩小字体大小,以便所有文本都适合 有什么建议吗? 不,我不能用UILabel来代替。我需要让文本在顶部垂直对齐,UILabel不会这样做 这在iOS 7之前就起作用了:Ios7 iOS 7-UITextView大小字体,可将所有文本放入视图中(无滚动),ios7,resize,uitextview,sizewithfont,Ios7,Resize,Uitextview,Sizewithfont,我试图找到一种不推荐使用的方法来缩小文本视图的字体大小,这样所有文本都可以在文本视图中显示,而无需滚动 不推荐使用“sizeWithFont”方法,我希望确保最佳实践,XCode说使用“boundingRectWithSize”,但不确定如何使用它来缩小字体大小,以便所有文本都适合 有什么建议吗? 不,我不能用UILabel来代替。我需要让文本在顶部垂直对齐,UILabel不会这样做 这在iOS 7之前就起作用了: CGFloat fontSize; CGFloat minSize; if([d
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;
}
CGFloat-size;
CGFloat-minSize;
if([deviceType IseQualtString:@“iPad”]| |[deviceType IseQualtString:@“iPad模拟器”]){
fontSize=40;
minSize=15;
}
否则{
fontSize=18;
minSize=8;
}
同时(fontSize>minSize)
{
CGSize size=[quote sizeWithFont:[UIFont fontWithName:@“州际”大小:fontSize]约束大小:CGSizeMake(newView.frame.size.width,10000)];
如果(size.height尝试UITextView的sizeThatFits
。您可能可以通过以下方式使用它:
//Set text content of UITextView
//...
while (fontSize > minSize) {
// Set font size of UITextView
CGSize size = [textView sizeThatFits:(CGSizeMake(textView.frame.size.width, FLT_MAX)];
if (size.height <= newView.frame.size.height) break;
fontSize -= 1.0;
}
//设置UITextView的文本内容
//...
同时(fontSize>minSize){
//设置UITextView的字体大小
CGSize size=[textView sizeThatFits:(CGSizeMake(textView.frame.size.width,FLT_MAX)];
如果(尺寸。高度解决方案1
只需将sizeWithFont:constrainedToSize:
替换为:
boundingRectWithSize:CGSizeMake(newView.frame.size.width, FLT_MAX)
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{NSFontAttributeName:[UIFont fontWithName:@"Interstate" size:fontSize]}
context:nil];
解决方案2
sizehatfits
方法可用于解决以下问题:
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];
}
我希望这些解决方案之一能解决您的问题。干杯!UITextView是UIScrollView->的子类,因此您可以在将文本或字体设置为textView后检查可滚动区域的内容大小
textView.text = quote;
do
{
textView.font = [UIFont fontWithName:@"Interstate" size:fontSize];
[textView layoutIfNeeded];
if (textView.contentSize.height <= newView.frame.size.height) {
break;
}
fontSize -= 1.0;
} while (fontSize >= minSize);
textView.text=quote;
做
{
textView.font=[UIFont fontWithName:@“州际”大小:fontSize];
[文本视图布局需要];
if(textView.contentSize.height=minSize);
这应该行得通……即使没有[textView LayoutIfNeed],它也可能行得通。我必须做同样的事情,但是通过编程添加了自动布局约束(NSLayoutConstraint
)。由于限制因素,contentSize
在大多数情况下都不正确,导致UITextView
滚动:/
非常简单,但就像所有的事情一样,你只需要想出它:)
斯威夫特5+
var fontSize = Font.Size.section.rawValue
let minSize = Font.Size.large.rawValue
while fontSize > minSize {
let textViewSize = CGSize(width: textView.frame.size.width, height: textView.frame.size.height)
let size = textView.sizeThatFits(textViewSize)
if size.height <= textViewSize.height {
break
}
fontSize -= 1.0
}
textView.font = Font.primary.of(size: fontSize)
var fontSize=Font.Size.section.rawValue
让minSize=Font.Size.large.rawValue
而fontSize>minSize{
设textViewSize=CGSize(宽度:textView.frame.size.width,高度:textView.frame.size.height)
let size=textView.sizeThatFits(textViewSize)
如果size.height真棒!解决方案1对我不起作用,它实际上使字体变得非常大。但解决方案2起到了作用!谢谢!!那些不能在这里看到新视图的人-检查bicycle
下面的答案我爱你,很好的解决方案:)这有些效果。对我来说,键入单个字符不太好。。。
var fontSize = Font.Size.section.rawValue
let minSize = Font.Size.large.rawValue
while fontSize > minSize {
let textViewSize = CGSize(width: textView.frame.size.width, height: textView.frame.size.height)
let size = textView.sizeThatFits(textViewSize)
if size.height <= textViewSize.height {
break
}
fontSize -= 1.0
}
textView.font = Font.primary.of(size: fontSize)