在 ios7 中覆盖 drawRect 失败

Posted

技术标签:

【中文标题】在 ios7 中覆盖 drawRect 失败【英文标题】:Overriding drawRect in ios7 fails 【发布时间】:2013-09-22 15:09:44 【问题描述】:

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

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

-(void)drawRect:(CGRect)rect

    if([self isOS7]) 
       [super drawRect:rect];
     
    else 
        // custom drawing
    

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

有什么建议吗?

【问题讨论】:

drawRect,不叫……对吧?我有同样的问题 您找到解决方案/解决方法了吗?我可以想象来电者正在某处检查respondsToSelector:... 接缝是一个错误!当您删除整个方法并从 ios7 开始时,它可以工作。 super drawRect:rect 不起作用......所以它似乎无法在 io7 中正确覆盖此方法。你同意吗? @Sam,这就是我帖子的重点...... 对不起,我错过了最后一句话:-)。 【参考方案1】:

你可以解决它,如果你添加一个新的 UIView 作为一个子视图并在那里做一些事情而不是在 draw rect 中。

UITableViewCell drawInRect iOS7

【讨论】:

这是一个有趣的方法,我会尝试。

以上是关于在 ios7 中覆盖 drawRect 失败的主要内容,如果未能解决你的问题,请参考以下文章

IOS7中的内衬UITextView

在 drawRect 上添加覆盖图像

MKAnnotationView drawRect:没有被调用

如何在 UIButton 子类中覆盖 -drawrect?

剪辑时如何避免覆盖drawRect

如何使用 drawRect 覆盖在 UIView 子类的某些区域中获得透明度