0

我需要一个文本框,该文本框需要允许用户在文本框中输入文本并且文本保持在文本框边界内。如果用户输入的文本过多,它将减小字体以使其适合文本框界限。我不知道哪个对象能够满足这个要求。

4

2 回答 2

0

我假设您正在使用 UITextField (正如您所说的那样,它是一个文本框。

所以你可以使用以下

[yourTextField setMinimumFontSize:7.0];
[yourTextField setAdjustsFontSizeToFitWidth:YES];
于 2013-04-21T07:14:39.107 回答
0

有趣的是,我刚刚实现了这个。我是这样做的:

- (void)fitTextView {
    CGFloat height = [[UIScreen mainScreen] bounds].size.height - 16;

    _fontSize = 96;
    _text.font = [UIFont fontWithName:_fontName size:_fontSize];

    while (height < _text.contentSize.height) {
        if (_fontSize < 20) {
            break;
        }

        _fontSize -= 0.5;
        _text.font = [UIFont fontWithName:_fontName size:_fontSize];
    }

    while (height > _text.contentSize.height) {
        if (_fontSize > 96) {
            break;
        }

        _fontSize += 0.5;
        _text.font = [UIFont fontWithName:_fontName size:_fontSize];
    }
}

- (void)textViewDidChange:(UITextView *)textView {
    [self fitTextView];
}

不过,我的代码有一点问题,如果你输入得足够快,输入的文本会反弹一点。希望得到一些关于如何解决这个问题的反馈。

希望这可以帮助!

[编辑] 更多代码。

_fontSize = 96; 
_fontName = @"Helvetica";

_text = [[UITextView alloc] initWithFrame:self.view.bounds];
_text.autocapitalizationType = UITextAutocapitalizationTypeNone;
_text.autocorrectionType = UITextAutocorrectionTypeNo;
_text.delegate = self;
_text.text = @"";
_text.font = [UIFont fontWithName:_fontName size:_fontSize];
_text.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:1];
_text.textColor = [UIColor colorWithRed:1 green:1 blue:1 alpha:1];
[self.view addSubview:_text];

并且记得声明你的类实现了UITextViewDelegate协议。

于 2013-04-20T23:00:21.860 回答