使用自定义 drawRect 代码创建 UIButton LIKE 控件
Posted
技术标签:
【中文标题】使用自定义 drawRect 代码创建 UIButton LIKE 控件【英文标题】:Create UIButton LIKE control with custom drawRect code 【发布时间】:2013-10-09 17:08:32 【问题描述】:我想创建一个类似于UIButton
的自定义形状。我需要它将touchUpInside
发送到按钮之类的目标,但是我想在按钮状态更改时使用drawRect
更改按钮外观。
我在网上阅读了很多关于不继承 UIButton
或 UIControl
的相互矛盾的内容。
那么可接受的方法是什么?
另外,如果答案是UIControl
,那么如何使用“beginTracking
”方法实现touchUpInside
?
为什么我们不能继承UIButton
。我读过关于它是一个类集群而不使用UIButtonTypeCustom
的东西,因为它不起作用,但这是为什么呢?
我希望有人可以对此有所了解或指出我的一些好读物。
谢谢。
【问题讨论】:
看看有没有帮助***.com/questions/3679239/… 在阅读了这些人的讨论/争论之后,我仍然有点困惑。如果继承 UIButton 是安全的,为什么必须使用 IB 来更改其类型?似乎有点骇人听闻。你怎么看? 期待提到的原因here in Apple docs 我不认为继承 UIButton 是个好主意。考虑继承 UIView 或使用自定义 UIButton 类型。 【参考方案1】:当我想做一个自定义按钮时,我遇到了同样的问题。我还阅读了许多似乎没有找到继承UIButton
的正确方法的帖子。在您的情况下,我建议继承 UIButton
并覆盖 setHighlighted:
方法来调整选择按钮。我有一个名为LDGradientButton
的UIButton
子类,可以在lightdesign/LDGradientButton 找到。随意看看绘图代码。在我的例子中,我使用的是CALayers
,但如果我重新开始,我可能会使用CoreGraphics
。
【讨论】:
以上是关于使用自定义 drawRect 代码创建 UIButton LIKE 控件的主要内容,如果未能解决你的问题,请参考以下文章
即使使用 UIViewContentModeScaleAspectFill 也会调用自定义 UIView drawRect