【问题标题】:Add UINavigationBar Shadow Application Wide?添加 UINavigationBar 阴影应用范围?
【发布时间】:2012-03-29 23:34:37
【问题描述】:

有一些关于如何向 UINavigation 栏添加阴影的教程,但是是否有任何方法最适合在整个应用程序范围内而不是在单个实例中添加这个阴影?

或者我唯一的选择是在我的应用程序的每个视图中都简单地有一个子类导航栏?认为可能有比这样做更快、更简单的方法吗?

谢谢。

【问题讨论】:

    标签: iphone objective-c uinavigationbar


    【解决方案1】:

    创建一个名为UINavigationBar+dropshadow.mUINavigationBar 类别并将其放入文件中

    #import <QuartzCore/QuartzCore.h>
    
    @interface UINavigationBar (dropshadow)
    
    -(void) applyDefaultStyle;
    
    @end
    
    @implementation UINavigationBar (dropshadow)
    
    -(void)willMoveToWindow:(UIWindow *)newWindow{
        [super willMoveToWindow:newWindow];
        [self applyDefaultStyle];
    }
    
    - (void)applyDefaultStyle { 
        // add the drop shadow
        self.layer.shadowColor = [[UIColor blackColor] CGColor];
        self.layer.shadowOffset = CGSizeMake(0.0, 3.0);
        self.layer.shadowOpacity = 0.25;
        self.layer.shouldRasterize = YES;
    }
    @end
    

    【讨论】:

    • self.clipsToBounds = NO;需要,但效果很好,谢谢!
    • 您将如何解决类别的(自动)旋转问题?
    【解决方案2】:

    如果您使用的是 iOS6,则可以使用 Appearance 代理来执行此操作。

    这是 Apple 类参考:http://developer.apple.com/library/ios/#documentation/uikit/reference/UIAppearance_Protocol/Reference/Reference.html

    EDIT 1修正了所需的iOS版本(之前被误认为是iOS5)

    编辑 2 请参阅此 SO 问题:Appearance proxy - setShadowImage alternative for iOS 5? 获取代码 sn-p

    【讨论】:

    • 一个代码示例会很棒...我找不到使用 UIAppearance 代理向导航栏添加阴影的方法...
    • 对不起,我编辑了另一个 SO 问题,在我的帖子中提供了一个代码 sn-p。另外,我刚刚意识到我把它打开了,你需要 iOS6 来让代理处理阴影,而不是 iOS5。现已修复,感谢您的反馈。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-18
    • 1970-01-01
    • 1970-01-01
    • 2020-05-06
    • 1970-01-01
    • 2015-05-22
    • 1970-01-01
    相关资源
    最近更新 更多