Ios 如何使UIView高度等于其子视图';s的额外高度,以便它可以轻松滚动到最后

Ios 如何使UIView高度等于其子视图';s的额外高度,以便它可以轻松滚动到最后,ios,objective-c,iphone,uiview,Ios,Objective C,Iphone,Uiview,我有一种情况,我有以下视图布局 -UIViewcontroller -SCrollView -UIView(outer) -buttons -labels -UIView(inner) -labels -buttons -buttons 当动态添加内部内容时,内部ui视图高度可以任意延长。 所以主要的问题是我不能滚动到内容的末尾,而只能滚动到内部UIView的高度 注意-

我有一种情况,我有以下视图布局

-UIViewcontroller

  -SCrollView

    -UIView(outer)

      -buttons

      -labels 

      -UIView(inner)

           -labels

           -buttons

       -buttons
当动态添加内部内容时,内部
ui视图
高度可以任意延长。 所以主要的问题是我不能滚动到内容的末尾,而只能滚动到内部
UIView
的高度

注意-我正在使用自动布局

非常感谢您的帮助


谢谢

您应该根据正在添加的内容动态更改内部视图的框架。根据内部视图层次结构,您有
标签
按钮
。您可能正在
标签
上设置一些动态文本,并使用
按钮
执行一些操作。使用以下方法获取文本的高度

- (CGSize)getHeightForText:(NSString *)text havingWidth:(CGFloat)widthValue andFont:(UIFont *)font {
CGSize size = CGSizeZero;
if (text) {
    CGRect frame = [text boundingRectWithSize:CGSizeMake(widthValue, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{ NSFontAttributeName:font } context:nil];
    size = CGSizeMake(frame.size.width, frame.size.height);
}
return size;
}

这里的
font
是您设置为按钮和标签的字体。通过传递添加在
标签
按钮
上的文本来调用此方法
CGSize
有一个
height
属性,添加
height
标签的
值和
按钮
。现在,通过调用
innerView.frame.size.height=
将此总和
height
设置为
innerView
。这会根据内部内容增加内部视图的高度。

将所有按钮放在容器视图的底部,并将以下约束添加到外部视图(假设您添加的新容器称为“buttonContainer”):

  • innerView底部和buttonContainer顶部之间的垂直间距约束

  • 按钮容器底部和外部视图底部之间的垂直间距约束

  • 按钮容器和外部视图之间的水平间距约束,以将其强制为全宽

使用AutoLayout时,必须有足够的约束来正确定义scrollView的contentSize。 有关在UIScrollView中使用AutoLayout的更多信息,请查看Apple提供的以下链接:


尝试此代码时,它会显示“表达式不可赋值”。请将“高度”值设置为标签高度和按钮高度的总和,而不是“”值。我提到在这里设置一些值。它应该是这样的innerView.frame.size.height=300。这里300是高度值。我能理解,我也这么做了。它显示了相同的错误消息。@Cihan Tek请告诉我应该使用什么约束。请查看下面我更详细的答案