如何让UITableView坐在UIImageView之上

时间:2012-04-24 23:25:05

标签: 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:[self myTableView]]; // CGRectMake(0.0f, 140.0f, 320.0f, 480.0f)

但在视觉上,当桌面视图被拉下来时,它就像桌面视图位于图像视图下方并被拉出图像视图,而不是我想要在上面实现的。

如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

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

您的问题有两种解决方案..

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

// nil by default (but has a color if nil)
[[self myTableView] setBackgroundView:[self myImageView]];

或者您可以使表格视图的背景颜色透明,在背景中显示任何子视图:

[[self myTableView] setBackgroundColor:[UIColor clearColor]];

在你的情况下,由于myImageView框架没有填满整个屏幕框架,后一种解决方案可能是最好的,但只是意识到没有图像的区域将是最底层的背景颜色是(UIViewController的背景或UIWindow,具体取决于您的设置)。

希望这有帮助!

*除非设置页眉或页脚视图,但这是UITcrollView的一部分,UITableView继承了,在这种情况下可能不是你想要的,因为这些视图滚动了tableview内容,而不是静态显示在桌子后面。

答案 1 :(得分:0)

我相信你可以将表格视图的.backgroundImage或.backgroundView属性设置为[UIImage imageNamed@"my image"];