我希望UITextField
具有相同的行为,使用相同的fontsize:
但是当我输入与min fontsize
相同的original fontsize
时,我得到了这种行为:
导致此行为的原因是什么?如何解决?
我不想调整字体大小。因此,调整字体大小不会起作用
答案 0 :(得分:1)
我认为你的设置有误。默认情况下,当您在UITextField
上键入时,它会在最后输入的字符处显示光标,这是您提供的第一个示例,但不会更改字体大小。仅当您将adjustsFontSizeToFitWidth
设置为YES时,才会出现收缩行为。请尝试删除minimumFontSize
和adjustsFontSizeToFitWidth
设置。
答案 1 :(得分:0)
好问题。 AFAIK,它无法完成。但是,您可以编写自己的自定义控件来执行此操作。我首先在顶部放一个标签,然后用键盘输入来设置标签的内容。
这是应该做的诀窍的代码。您需要将标签放在另一个视图中,以便在调整文本时剪切文本。
- (IBAction)field1_editing_changed:(id)sender {
NSString *text = self.field1.text;
NSAttributedString *attributedText =
[[NSAttributedString alloc]
initWithString:text
attributes:@{NSFontAttributeName:self.field1.font}];
CGRect rect = [attributedText boundingRectWithSize:(CGSize){CGFLOAT_MAX, CGFLOAT_MAX}
options:NSStringDrawingUsesLineFragmentOrigin
context:nil];
CGFloat padding = 5;
CGFloat width = rect.size.width;
width += 2*padding;
CGRect frame = self.field1.frame;
if (width > frame.size.width)
frame.origin.x -= width - frame.size.width;
frame.origin.y += 30; // I added this so you could see the label appear below the field (for testing only)
frame.origin.x += padding;
frame.size.width = width;
NSLog(@"%g, %g, %g, %g", frame.origin.x, frame.origin.y, frame.size.width, frame.size.height);
self.label1.frame = frame;
self.label1.text = self.field1.text;
self.label1.font = self.field1.font;
}
答案 2 :(得分:0)
UITextField
有一个属性adjustsFontSizeToFitWidth
,请参阅UITextField Class Reference。
您可以设置足够大的默认字体大小,让控件缩小文本以适应宽度。实际字体大小介于minimumFontSize
和font
的大小设置之间。
答案 3 :(得分:0)
与UILabel类似,UITextField有一个属性 "#adjustsFontSizeToFitWidth 34; 您可以尝试将此设置为YES