根据UITextview的高度变化调整UILabel

时间:2014-12-18 12:34:28

标签: ios objective-c cocoa-touch uitextview frame

我是iOS开发的新手 当UITextView动态更改其高度时(例如,用户在UITextView中输入多个Line)如何根据UITextView的高度调整UILabel位置(在uitextview下面)

enter image description here

        after text entered by user 

enter image description here

2 个答案:

答案 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上找到了这个解决方案,抱歉无法提供原始答案的链接。