gpt4 book ai didi

iphone - 调整 UITextView 的大小

转载 作者:行者123 更新时间:2023-12-03 18:16:49 27 4
gpt4 key购买 nike

我在我的 UIView 上添加了一个 UITextView。添加的textview不可编辑,只是显示一些数据。 TextView 中显示的数据是动态的。那就是行数不固定。它可能会有所不同。所以如果行数增加,textview的大小也需要增加。我不知道该怎么做。请给我一些想法。

更新:

这就是我正在做的事情:

UIView *baseView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 200)];
baseView.backgroundColor = [UIColor grayColor];
[window addSubview:baseView];

UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(5, 30, 100, 30)];
textView.autoresizingMask = UIViewAutoresizingFlexibleHeight;
textView.text = @"asdf askjalskjalksjlakjslkasj";
[textView sizeToFit];
[baseView addSubview:textView];

最佳答案

有一个答案发布在 How do I size a UITextView to its content?

CGRect frame = _textView.frame;
frame.size.height = _textView.contentSize.height;
_textView.frame = frame;

或更好(考虑到contentInset,感谢kpower的评论)

CGRect frame = _textView.frame;
UIEdgeInsets inset = textView.contentInset;
frame.size.height = _textView.contentSize.height + inset.top + inset.bottom;
_textView.frame = frame;

注意:如果您要多次引用对象的属性(例如frame或contentInset),最好将其分配给局部变量,这样就不会触发额外的方法调用(_textView.frame/[_textView框架] 是方法调用)。如果您多次调用此代码(100000 次),那么速度会明显变慢(十几个方法调用是微不足道的)。

但是...如果您想在一行中完成此操作而不需要额外的变量,那就是

_textView.frame = CGRectMake(_textView.frame.origin.x, _textView.frame.origin.y, _textView.frame.size.width, _textView.contentSize.height + _textView.contentInset.top + _textView.contentInset.bottom);

以 5 次额外方法调用为代价。

关于iphone - 调整 UITextView 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/728704/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com