我是iOS开发的新手 当UITextView动态更改其高度时(例如,用户在UITextView中输入多个Line)如何根据UITextView的高度调整UILabel位置(在uitextview下面)
after text entered by user
答案 0 :(得分:1)
如果您没有使用自动布局,可以这样做
CGRect rect = self.lbl.frame;
rect.origin.y = self.txtVw.frame.origin.y + self.txtVw.frame.size.height;
self.lbl.frame = rect;
答案 1 :(得分:0)
或者,如果您使用自动布局,请将UITextView子类化并覆盖其中的几个方法,如下所示:
- (void) layoutSubviews
{
[super layoutSubviews];
if (!CGSizeEqualToSize(self.bounds.size, [self intrinsicContentSize])) {
[self invalidateIntrinsicContentSize];
}
}
- (CGSize)intrinsicContentSize
{
CGFloat boundWidth = [[UIApplication sharedApplication] keyWindow].frame.size.width;
boundWidth = MIN(boundWidth, self.bounds.size.width);
CGSize intrinsicContentSize;
intrinsicContentSize = [self sizeThatFits:CGSizeMake(boundWidth, FLT_MAX)];
return intrinsicContentSize;
}
不要忘记在Interface Builder中为文本视图分配类,当然也要正确设置所有其他约束。 我想,我前段时间在StackOverflow上找到了这个解决方案,抱歉无法提供原始答案的链接。