【问题标题】:how can I add attached drop shadows to uinavigationbar and uitoolbar如何将附加的阴影添加到 uinavigationbar 和 uitoolbar
【发布时间】:2011-04-08 13:37:17
【问题描述】:

我正在开发一个为 UINavigationBar 和 UIToolbar 使用自定义图像的应用程序,这很好,但它们还需要在导航栏下方和工具栏上方放置一个阴影,该阴影始终位于所有其他视图控制器之上。我不能简单地制作包含阴影的背景图像,因为这不适用于我的表格视图。当我将导航栏和工具栏设置为隐藏(动画)时,我还需要动画消失。

我查看了 Stack Overflow 和网络上的其他资源,并研究了建议的解决方案,但我无法成功地将 UINavigationBar、UIToolbar 甚至 UINavigationController 子类化以提供我所追求的结果。

如果能提供任何帮助,我们将不胜感激。谢谢:)

【问题讨论】:

    标签: iphone uinavigationbar uitoolbar shadow dropshadow


    【解决方案1】:

    最后我决定只使用带有阴影的背景 png 图像,并将它们与 UINavigationBar 和 UIToolbar 的子类一起应用,该子类实现了 drawRect 方法(用于背景图像)和 sizeThatFits 方法来调整导航栏的大小。这是最终产品(按钮隐藏了条):

    这是我在每个子类中实现的方法:

     - (void)drawRect:(CGRect)rect {
       UIImage *image = [[UIImage imageNamed:@"bargloss-withshadow.png"] retain];
       [image drawInRect:rect];
       [image release];
    }
    
    
    - (CGSize)sizeThatFits:(CGSize)size {
        CGSize newSize = CGSizeMake(320,60);
        return newSize;
    }
    

    请注意,我还在 IB 中将条形设为黑色半透明,以便内容在它们下方流动。

    【讨论】:

      【解决方案2】:

      假设您没有对视图层次结构做任何太花哨的事情,它可以相对容易地完成。在您的应用程序中添加以下代码行:didFinishLaunchingWithOptions 方法。

      dispatch_async(dispatch_get_main_queue(), ^{
          UIWindow* mainWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:0];
          UIView* mainView = [[mainWindow subviews] objectAtIndex:0];
          UIImageView* shadowImageView = [[UIImageView alloc] initWithImage:kImgNavbarShadowResizeable];
          shadowImageView.frame = CGRectMake(0, 64, 320, shadowImageView.frame.size.width);
          [mainView insertSubview:shadowImageView atIndex:1];
      });
      

      shadowImageView 是要用作阴影的 imageView。

      【讨论】:

        【解决方案3】:

        查看 Matt Gallagher 的 blog post。它涵盖了(部分)您想要做的事情。除此之外,您可以尝试在导航控制器上方添加一个“阴影视图”,您可以根据需要制作动画。

        【讨论】:

        • 我看过 matt 的帖子并尝试过使用它,但是 UINavigationBar 和 UIToolbar 的 layoutsubviews 方法不允许我将图层放置在视图边界之外。我修改了该示例以将图层添加到可以处理的超级视图(在发布此问题之前这样做),但没有附加阴影等隐藏动画,阴影只是漂浮在内容上。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-21
        • 2013-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多