我试图达到以下效果 - 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)
但在视觉上,当桌面视图被拉下来时,它就像桌面视图位于图像视图下方并被拉出图像视图,而不是我想要在上面实现的。
如何解决这个问题?
答案 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"];