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

问题描述

| 感觉这应该很简单,但是到目前为止我还没有尝试过。简而言之,我想在以编程方式创建的UITableViewController的导航栏下方添加固定图像。换句话说,即使用户上下滚动表格视图,我也希望图像保持在导航栏的正下方(这基本上是导航栏的自定义阴影)。 我得到的最接近的代码是下面的代码(在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相比,这是一个更好的解决方案:
@implementation UINavigationBar (ShadowBar)
- (void)drawRect:(CGRect)rect {
    //draw the shadow ui nav bar
    UIImage *image = [UIImage imageNamed: @\"UINavBarWithShadow.png\"];
    [image drawInRect:CGRectMake(0,self.frame.size.width,self.frame.size.height)];
}

- (void)layoutSubviews {
    self.frame = CGRectMake(0,300);
}
@end
要使UINavigationBar更高,从而不剪切内容,请覆盖
layoutSubviews
并设置所需的框架(上面的代码假定标头高300点)。
layoutSubviews
默认情况下不执行任何操作,但在布局视图之前会调用“ lazy”。 有关适用于UIView(以及任何其他子类)的此自定义大小/外观替代的更多信息,请在此处查看     ,        您可以在UINavigationBar上创建一个子类或类别,并将其添加到
init
或ѭ5add方法中。如果考虑一下,您正在尝试向导航栏而不是UITableView添加阴影,因此修改导航栏(而不是表格)是有意义的。     ,        您将dropShadowView添加到self.view中,在这种情况下,它是UITableViewController的视图。这意味着您的self.view是UITableView,因此上下滚动时也滚动dropShadowView,因为它位于tableView内部。 尝试编写一个自定义UIViewController并添加两个子视图:一个是dropShadowView,另一个是您的表。     ,        看看我不久前回答的这个类似问题。只需很少的定制,它就可以完全满足您的要求。 UITableView顶部的透明视图     ,        不要以ѭ6为主视图。
view
插座,将其设置为包含
UITableView
UIView
,然后使控制器成为ѭ10and的子类,并使其符合
UITableViewDataSource
UITableViewDelegate
。在笔尖中,设置视图,以便在顶部具有UIImageView,在下面具有UITableView。并将
delegate
datasource
设置为
file\'s owner
。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...