Iphone 如何让UITableView位于UIImageView之上

Iphone 如何让UITableView位于UIImageView之上,iphone,objective-c,ios,uitableview,uiimageview,Iphone,Objective C,Ios,Uitableview,Uiimageview,我试图达到以下效果 -UIImageView放置在底部 -UITableView放置在UIImageView顶部并覆盖UIImageView的一部分 -当下拉UITableView时,UIImageView的其余部分将相应显示 我在UIViewController中以以下方式编码 [self.view addSubview:[self myImageView]]; // CGRectMake(0.0f, 0.0f, 320.0f, 240.0f) [self.view addSubview:[s

我试图达到以下效果 -UIImageView放置在底部 -UITableView放置在UIImageView顶部并覆盖UIImageView的一部分 -当下拉UITableView时,UIImageView的其余部分将相应显示

我在UIViewController中以以下方式编码

[self.view addSubview:[self myImageView]]; // CGRectMake(0.0f, 0.0f, 320.0f, 240.0f)
[self.view addSubview:[self myTableView]]; // CGRectMake(0.0f, 140.0f, 320.0f, 480.0f)
但是从视觉上看,当表格视图被拉下来时,它就像是表格视图坐在图像视图下面,从图像视图中被拉出来,而不是我想在上面实现的


如何解决这个问题

UITableView不会在子视图层次结构中显示其后面的内容。它有一个背景,从技术上讲,你不是在视图中上下拖动一个长的列表,而是简单地拖动在一个总是相同高度的设定帧中显示的内容。向上或向下拖动过远时,将显示表格视图的背景*

你的问题有两种解决办法

您可以使用上面的对象名称将图像添加为表视图的背景:

// nil by default (but has a color if nil)
[[self myTableView] setBackgroundView:[self myImageView]];
或者,可以使表视图的背景色透明,在背景中显示任何子视图:

[[self myTableView] setBackgroundColor:[UIColor clearColor]];
在您的情况下,由于myImageView框架并没有填满整个屏幕框架,后一种解决方案可能是最好的解决方案,但请注意,没有图像的区域将是最后面的背景颜色UIViewController的背景或UIWindow,这取决于您的设置

希望这有帮助


*除非设置页眉或页脚视图,但这是UIScrollView的一部分,UITableView继承自UIScrollView,在本例中可能不是您想要的,因为这些视图随tableview内容滚动,而不是静态地显示在表后面。

我相信您可以将表视图的.backgroundImage或.backgroundView属性设置为[UIImage]imageNamed@my图像]

将图像视图设置为tableview的背景将使整个图像始终可见,而不是我想要实现的效果tableview首先覆盖图像视图的一部分,并且图像视图的其余部分仅在下拉tableview时可见您的意思是像我所做的那样添加两个子视图,然后将表视图的背景色设置为“清晰”?是的,这样当上下拖动到表视图的内容之外时,应该可以看到表视图后面的子视图。我尝试了这种方法,它将图像视图显示为表视图的背景,这意味着整个图像视图可以一目了然。我不太清楚你的意思。也许您想等到加载完数据后再添加背景子视图?