【问题标题】:Drawing in custom UINavigationBar, attached to top在自定义 UINavigationBar 中绘图,附加到顶部
【发布时间】:2013-10-22 16:30:16
【问题描述】:

我有一个UINavigationBar 的子类。这是barPositionUIBarPositionTopAttached。 比我在我的子类中覆盖-(void)drawRect:(CGRect)rectrect,作为参数,总是有 44 px 的高度,我只能在这个矩形内绘制。所以,我无法在状态栏上进行绘图,它具有默认外观。如果我将-drawRect 注释掉,那么它看起来像预期的那样,导航栏和状态栏看起来是一个整体,并且有 64 像素的高度。有没有办法通过在UINavigationBar 的子类中覆盖-drawRect: 来实现这种效果?

【问题讨论】:

    标签: ios cocoa uinavigationcontroller ios7 uinavigationbar


    【解决方案1】:

    当我在 drawRect 中添加图像时,我遇到了一个带有背景图像的自定义 UINavigationBAr 问题,它不会出现在 iOS 7 的半透明状态栏下。

    将背景图片移动到 ViewControllers 的 viewDidLoad 方法后,背景图片随即出现在状态栏下方

    -(void)viewDidLoad
    {
     if (UI_USER_INTERFACE_IDIOM() != UIUserInterfaceIdiomPad)
    {
        UIImage *image = [UIImage imageNamed:@"nav-bg-ipad.png"];
        [self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
    }else{
        UIImage *image = [UIImage imageNamed:@"nav-bg-iphone.png"];
        [self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
    }
    // do your other stuff now …
    

    希望这会有所帮助

    【讨论】:

    • 是的,看起来使用覆盖的 -drawRect 是不可能的。我发现的另一种可能性是覆盖 -layoutSubview 方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多