在 ios7 中覆盖 drawRect 失败

标签 overriding uinavigationbar ios7

对于 iOS6 中的自定义布局,我创建了 UINavigationBar 的子类并覆盖了 drawRect 方法。我在界面生成器中指定了类,因为不是每个 Controller 都需要有这个效果。这也是我不能使用类别的原因。

但是现在使用 iOS7,我想使用默认导航栏而不是覆盖行为。下面的代码不起作用:

-(void)drawRect:(CGRect)rect
{
    if([self isOS7]) {
       [super drawRect:rect];
    } 
    else {
        // custom drawing
    }
}

问题是,通过实际定义drawRect,ios7无法正确绘制状态栏下方的导航栏。如果我省略了整个 drawrect,它就可以工作(但是在旧设备下它不起作用!

有什么建议?

最佳答案

你可以解决它,如果你添加一个新的 UIView 作为 subview 并在绘制矩形中执行这些操作。

UITableViewCell drawInRect iOS7

关于在 ios7 中覆盖 drawRect 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18945279/

相关文章:

ios - UINavigationBar。外观。 setBarTintColor 不起作用

ios - 尽管嵌入在 NavigationController 中,但 UINavigationBar 未显示

ios - 使用 Obejctive C 在 tableview 单元格中搜索特定值时如何获取所有数组值?

c# - 覆盖对象的虚拟方法

java - 方法重写 :Passing derived class object when method accepts base class object

vb.net - 重写按钮上的 OnPaint - 字体不同

ios7 - 在 iOS7 中根据文本调整框架时 UITextView 文本丢失?

java - 如何重写子类的equals方法

swift - 如何更改导航栏标题位置?

ios - -[UIViewControllerWrapperView 框架] : message sent to deallocated instance getting Crash in IOS7