UITextView 使用自动布局自动调整大小
Posted
技术标签:
【中文标题】UITextView 使用自动布局自动调整大小【英文标题】:UITextView auto resize with autolayout 【发布时间】:2014-04-25 08:03:03 【问题描述】:我正在为 UICollectionView 构建一种状态项。我的问题是当我想向状态区域添加一些文本时,我无法自动调整为新文本的大小。我开启了自动布局,并且尝试了在 stacky 上找到的各种东西。
我认为最接近正确的是:
-(UICollectionViewCell *) collectionView:(UICollectionView*)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
StatusItemModel *statusModel = [self.items objectAtIndex[indexPath indexPosition:0]];
StatusItemEventCell *statusCell = [collectionView dequeueResusableCellwithReuseIdentifier: @"EventStatusItem" forIndexPath:indexPath];
statusCell.statusTitleLabel.text = [statusModel.statusDetails valueForKey:@"title"];
statusCell.statusContentTextView.text = [statuaModel.statusDetails valueForKey:@"content"];
[statusCell layoutIfNeeded];
return statusCell;
// After which I believe we have to do some magic in this but what?
- (CGSize) collectionView:(UiCollectionView *) collectionView layout:(UICollectionViewLayout *) collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
// How do I get the size of the textview statusContentTextView.text?
// With that I'll be able to figure out what needs to be returned.
return CGSizeMake(299.f, 200.f);
自动布局设置了单元格中所有元素的约束。我什至玩过内在大小和占位符,但现在还是运气。请有人指出我正确的方向。
【问题讨论】:
看看这个。希望对你有帮助***.com/questions/7754851/… 【参考方案1】:所以在绕圈思考有更好的方法之后,我们需要知道大小才能为集合视图设置单元格的大小。相当适得其反,因为有时我们在运行时不知道它的大小。我解决这个问题的方法是创建一个模拟 UITextView 对象,然后调用sizeThatFits
。
这就是我对我的代码所做的:
- (CGSize) collectionView:(UICollectionView *) collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
StatusItemModel *statusModel = [self.items objectAtIndex:[indexPath indexAtPosition:0]];
UITextView *temporaryTextView = [[UITextView alloc] init];
temporaryTextView.text = [statusModel.statusDetails valueForKey:@"content"];
CGSize textBoxSize = [temporaryTextView sizeThatFits:CGSizeMake(299.0f, MAXFLOAT)];
// Can now use the height of the text box to work out the size of the cell and
// the other components that make up the cell
return textBoxSize;
【讨论】:
以上是关于UITextView 使用自动布局自动调整大小的主要内容,如果未能解决你的问题,请参考以下文章
在 UIScrollView 中自动调整 UITextView 的大小
使用自动布局的 UITableView 中的动态 UITextView 高度?