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一个子类或一个类别,并将其添加到init
或drawRect
方法中。 如果你考虑这个问题,你试图给导航栏添加一个阴影,而不是UITableView,所以修改导航栏而不是表格是有意义的。
你将dropShadowView添加到self.view中,在你的情况下是UITableViewController的视图。 这意味着你的self.view是一个UITableView,所以当你上下滚动滚动dropShadowView以及因为是在tableView。
尝试编写一个自定义UIViewController并添加两个子视图:一个是dropShadowView,另一个是你的表。
看看我回答的这个类似的问题。 它应该做什么你想要的小定制。
在UITableView顶部的透明视图
不要做一个UITableView
的主视图即。 view
sockets,将其设置为包含UITableView
的UIView
,然后使您的控制器成为UIViewController
的子类,并使其符合UITableViewDataSource
和UITableViewDelegate
。 在你的笔尖,设置你的视图,以便你有一个UIImageView在顶部和下面的UITableView。 并将delegate
和datasource
设置为file's owner
。