hva*_*rug 19 iphone objective-c uitextfield ios
我有一个UITextField
表视图单元格,当它的文本变得太长时,我希望字体大小减少.我想说清楚我说的是a UITextField
,而不是a UILabel
或a UITextView
.我说这个的原因是因为我看到这个问题多次弹出,答案都是基于UILabel
而不是UITextField
.例如,有人问"我不能让我UITextField
自动收缩",答案是"确保它numberOfLines
被设置为1
".据我所知,a UITextField
甚至不具备该属性并且是单行控制.
我试过了:
minFontSize
到7并检查"调整到适合"框tableView:cellForRowAtIndexPath:
ptCell.name.font = [UIFont systemFontOfSize: 14.0];
ptCell.name.adjustsFontSizeToFitWidth = YES;
ptCell.name.minimumFontSize = 7.0;
Run Code Online (Sandbox Code Playgroud)
但这些都没有奏效.我的意思是,它不是缩小文本而是截断尾部.
有谁知道我错过了什么?据推测,这应该有效,因为我已经看到其他问题抱怨当用户不想要它时它正在这样做.
mic*_*c3r 14
我有同样的问题.当文本太长时,UITextField停止缩小文本,但它会自行调整大小并超出其"边界".
帮助我的解决方案是在给定的UITextField上设置宽度约束.在此之后它不再增长,而是内部的文本按预期变小.(当然你必须设置minFontSize并检查故事板中的"adjust to fit"框.)
我知道这有点晚了,但是如果有人通过谷歌我会这么做就会发现这个问题......这可能只是帮助.
hva*_*rug 10
我使用@Purva发布的答案作为起点来提出这种方法,该方法从配置的字体大小开始提供所需的字体大小,而不是低于配置的最小字体大小.虽然@Purva测试了文本的高度,但我要求宽度适合.此方法可以放在UITextField的类别或子类中.我把它放在一个子类中,它也捕获了UITextFieldTextDidChangeNotification
.从此通知处理程序中,我调用新方法并根据需要调整字体大小.当我将新文本分配给文本字段以确保它适合子类化时,我也称它为- (void)setText: (NSString*)text
.
在每种情况下,当我调用它时,我使用以下代码:
CGFloat requiredFontSize = self.requiredFontSize;
if( self.font.pointSize != requiredFontSize )
{
self.font = [self.font fontWithSize: requiredFontSize];
}
Run Code Online (Sandbox Code Playgroud)
这是新方法:
- (CGFloat)requiredFontSize
{
const CGRect textBounds = [self textRectForBounds: self.frame];
const CGFloat maxWidth = textBounds.size.width;
if( _originalFontSize == -1 ) _originalFontSize = self.font.pointSize;
UIFont* font = self.font;
CGFloat fontSize = _originalFontSize;
BOOL found = NO;
do
{
if( font.pointSize != fontSize )
{
font = [font fontWithSize: fontSize];
}
CGSize size = [self.text sizeWithFont: font];
if( size.width <= maxWidth )
{
found = YES;
break;
}
fontSize -= 1.0;
if( fontSize < self.minimumFontSize )
{
fontSize = self.minimumFontSize;
break;
}
} while( TRUE );
return( fontSize );
}
Run Code Online (Sandbox Code Playgroud)
小智 8
我想你想把你的adjustsFontSizeToFitWidth
属性设置UITextField
为YES,并指定一个minimumFontSize
.适合我,但我以UITextField
编程方式添加- IB问题?
归档时间: |
|
查看次数: |
23488 次 |
最近记录: |