带有子视图的 UIScrollView,包括 ImageView、Label 和 Table View

Posted

技术标签:

【中文标题】带有子视图的 UIScrollView,包括 ImageView、Label 和 Table View【英文标题】:UIScrollView with SubViews including ImageView, Label & Table View 【发布时间】:2016-05-17 03:44:40 【问题描述】:

我正在构建一个需要以以下格式显示视图的 ios 应用程序。

UIView  
UIScrollView
UIView (Content View)
UIImageView (20% height of View)
UILabel embedded in UIView (20% height or greater depending on label content)
UITableView (60% or greater depending on table content)

上面的布局是使用故事板构建的。

我看到两个滚动条(一个用于 UIScrollView,另一个用于 UITableView)。

我尝试禁用 UITableView 中的滚动,希望 UIScrollView 会自动缩放,但它会截断一大块 tableview 内容。

是否可以有一个单独的滚动条可以显示 Image、Label 和 TableView 的内容?

【问题讨论】:

【参考方案1】:

你不应该使用滚动视图作为基础,因为 tableview 有它自己的滚动视图。

您可以将所有这些内容直接放在UIView 上。

如果您想在用户滚动时向上滚动图像和标签,则可以使用 headerviewtableview。您可以使用图像和标签配置headerview

因此,采用全屏尺寸的 tableView 并将 headerview 设置为所需的尺寸(在您的情况下,20% 用于 imageview,20% 用于标签)。

您可以将UIView拖放到tableview来设置headerview。您的 tableview 视图层次结构应如下图所示:

这里的表格视图单元格上方和表格视图下方的视图是您的标题视图。

希望这会有所帮助:)

【讨论】:

不客气... :) 如果您觉得它有帮助,那么请为答案投票...:)【参考方案2】:

修改您的 tableview 高度约束将解决这个问题。如果滚动视图约束设置正确

[tableview reloadData];
[tableHeightConstraint setConstant:tableview.contentsize.height]; 
[tableview setScrollEnabled:NO];
[tableview setBounces:NO];

imageview 和 Tableviews 的高度限制足够了,标签高度会自动计算

【讨论】:

以上是关于带有子视图的 UIScrollView,包括 ImageView、Label 和 Table View的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView 弄乱了它的子视图

UIScrollView 在视图出现之前不会接受子视图

子视图内的 UIScrollview 高度动态变化

拖动子视图时防止 UIScrollView 滚动

UIScrollView + 改变方向 = 混乱的子视图(iPad)

子视图不会将后沿与其父 UIScrollView 对齐