iOS:在导航栏正下方添加一个固定的图像

感觉这应该是相当简单的,但我迄今为止没有尝试过的工作。 简而言之,我想添加一个固定的图像就在我创build的UITableViewController导航栏下方,我创build编程。 换句话说,即使用户在表格视图中上下滚动(它基本上是导航栏的自定义拖放阴影),我也希望图像保持在导航栏的正下方。

我得到的最接近的是下面的代码(在UITableViewController的init方法中),它添加了图像,但不会在用户滚动时不让它移动。

// Add nav bar drop shadow UIImage *dropShadowImage = [UIImage imageNamed:@"NavBarDropShadow.png"]; UIImageView *dropShadowView = [[UIImageView alloc] initWithImage:dropShadowImage]; [self.view addSubview:dropShadowView]; 

有没有一个简单的方法来添加一个图像添加到屏幕上编程,将其放在任何你喜欢的地方,并保持在那里,即使用户滚动? 感谢您的任何和所有的投入!

编辑:IOS5有更好的方法来做到这一点。 请查看新的UIAppearance协议。

将这段代码添加到您的代码将允许您在应用程序中的所有UINavigationBars上绘制阴影。 这是比作为UIImageView添加阴影更好的解决scheme:

 @implementation UINavigationBar (ShadowBar) - (void)drawRect:(CGRect)rect { //draw the shadow ui nav bar UIImage *image = [UIImage imageNamed: @"UINavBarWithShadow.png"]; [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; } - (void)layoutSubviews { self.frame = CGRectMake(0, 0, self.frame.size.width, 300); } @end 

为了使UINavigationBar更高,从而不削减你的内容,重写layoutSubviews并设置你需要的框架(上面的代码假设你的标题是300点高)。 layoutSubviews默认不做任何事情,但在布局视图之前调用“lazy”。

有关此自定义大小/外观覆盖适用于UIView(和任何其他子类)的更多信息看看这里

您可以在UINavigationBar上创build一个子类或一个类别,并将其添加到initdrawRect方法中。 如果你考虑这个问题,你试图给导航栏添加一个阴影,而不是UITableView,所以修改导航栏而不是表格是有意义的。

你将dropShadowView添加到self.view中,在你的情况下是UITableViewController的视图。 这意味着你的self.view是一个UITableView,所以当你上下滚动滚动dropShadowView以及因为是在tableView。

尝试编写一个自定义UIViewController并添加两个子视图:一个是dropShadowView,另一个是你的表。

看看我回答的这个类似的问题。 它应该做什么你想要的小定制。

在UITableView顶部的透明视图

不要做一个UITableView的主视图即。 viewsockets,将其设置为包含UITableViewUIView ,然后使您的控制器成为UIViewController的子类,并使其符合UITableViewDataSourceUITableViewDelegate 。 在你的笔尖,设置你的视图,以便你有一个UIImageView在顶部和下面的UITableView。 并将delegatedatasource设置为file's owner