如何在tableview控制器的导航栏下方添加自定义视图?

时间:2013-01-20 10:42:23

标签: ios objective-c

我正在尝试创建像这样的界面

enter image description here

我有一张带有阴影的撕纸,位于导航栏下方但在我的桌面视图上方。

我在tableview控制器中使用以下代码

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self.view addSubview:[[UIImageView alloc] initWithImage:[UIImage imageNamed: @"ripped-paper"]]];
}

除了松土纸与桌面视图一起滚动之外,这种方法很好。我要求它在导航栏下保持固定。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

在iOS 6中,您只需使用UINavigationBarshadowImage属性。

UIImage *image = [[image imageNamed:@"tornPaper"] resizableImageWithCapInsets:UIEdgeInsetsMake(/* Your insets here */)];
self.navigationItem.navigationBar.shadowImage = image;

答案 1 :(得分:0)

您可以尝试将图片添加到表格视图控制器self.view.superview

    [self.view.superview addSubview:[[UIImageView alloc] initWithImage:[UIImage imageNamed: @"ripped-paper"]]];

你应该在viewDidAppear中执行此操作(否则将不会设置self.view.superview)。

这可能还需要更改框架/中心,或多或少像这样:

  UIImageView* rippedView = [[UIImageView alloc] initWithImage:[UIImage imageNamed: @"ripped-paper"]];
  rippedView.center = <SET CENTER HERE>;
  [self.view.superview addSubview:rippedView];

但最终它将在很大程度上取决于您的视图层次结构。

编辑:

对于您的自动旋转问题,请尝试设置视图autoresizingMaks

rippedView.autoresizingMaks = UIViewAutoresizingNone;

看看情况是否有所改善。这样,图像视图不应在旋转时调整大小。 (另外:你在旋转方法中做了什么吗?)