我通过编程方式动态地将视图添加到带有布局约束的滚动视图中,对于文本视图组件,我想根据文本视图中设置的文本设置高度约束,所以我创建了扩展 UITextView 的类。在文本视图类中,我编写了以下代码来添加高度约束。
#import "CETextView.h"
@implementation CETextView
- (void)layoutSubviews
{
[super layoutSubviews];
if (!self.heightConstraint)
{
self.heightConstraint = [NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:100];
[self addConstraint:self.heightConstraint];
}
CGRect lRect = [self contentSizeRect];
CGSize descriptionSize = lRect.size;
self.heightConstraint.constant = descriptionSize.height;
}
- (CGRect)contentSizeRect
{
NSTextContainer* textContainer = [self textContainer];
NSLayoutManager* layoutManager = [self layoutManager];
[layoutManager ensureLayoutForTextContainer: textContainer];
CGRect lRect = CGRectMake(0, 0,320, 500);
lRect.size = self.contentSize;
lRect.size.height = lRect.size.height + 5;
return lRect;
}
@end
此代码在 iOS 8.0 中给出正确的高度,但在 iOS 9.0 中给出错误的高度。我检查了新版本的 iOS 9.0 的苹果文档,其中有一些与自动布局相关的更改。
任何帮助表示赞赏。
不确定你是否解决了这个问题,但我把头撞在墙上几个小时,直到我确保我试图调整大小的 UITextViews 的启用滚动设置为“是”。不确定这是否能解决您的问题,似乎略有不同。
iOS 8 在启用滚动设置为“否”时可以很好地调整高度大小,但如果启用滚动设置为“否”,iOS 9 似乎不会调整高度约束的大小。我刚刚选中了故事板中所有文本视图的复选框,然后所有内容都调整了大小。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)