没有子类化的重载方法(特别是drawRect:)
Posted
技术标签:
【中文标题】没有子类化的重载方法(特别是drawRect:)【英文标题】:Overload method (specifically drawRect:) without subclassing 【发布时间】:2009-10-27 02:11:30 【问题描述】:我正在使用容器 UIView 来容纳 UIImageView 并进行一些自定义绘图。在这一点上,我想在我的子视图之上做一些绘图。所以覆盖 drawRect: 在我的容器中 UIView 只会在子视图下方绘制。
有没有办法在我的子视图中重载drawRect:而不对其进行子类化?
我认为方法调配可能是答案,但我希望不是。
(注意:是的,让 UIView 成为 UIImageView 的子视图会更聪明,但不幸的是我现在犯了我的错误。)
【问题讨论】:
【参考方案1】:你确定你的意思是重载而不是覆盖吗?
重载——创建一个基本名称相同但参数不同的新方法,因此选择器不同——可以通过将包含新方法的新方法类别添加到现有类来完成。
重写——修改现有方法的行为——需要在运行时对类的方法表进行猴子修补(例如,通过调配)或子类化。
【讨论】:
感谢您的澄清。覆盖绝对是我需要的,因为 drawRect: 从不直接调用。以上是关于没有子类化的重载方法(特别是drawRect:)的主要内容,如果未能解决你的问题,请参考以下文章
我正在使用 drawRect 实现 UIView 子类:如何绘制按钮?
Live Xcode 的 Interface Builder UIView 子类 (IB_DESIGNABLE) 没有 drawRect: