使用自定义 drawRect 代码创建 UIButton LIKE 控件

Posted

技术标签:

【中文标题】使用自定义 drawRect 代码创建 UIButton LIKE 控件【英文标题】:Create UIButton LIKE control with custom drawRect code 【发布时间】:2013-10-09 17:08:32 【问题描述】:

我想创建一个类似于UIButton 的自定义形状。我需要它将touchUpInside 发送到按钮之类的目标,但是我想在按钮状态更改时使用drawRect 更改按钮外观。

我在网上阅读了很多关于不继承 UIButtonUIControl 的相互矛盾的内容。

    那么可接受的方法是什么?

    另外,如果答案是UIControl,那么如何使用“beginTracking”方法实现touchUpInside

    为什么我们不能继承UIButton。我读过关于它是一个类集群而不使用UIButtonTypeCustom 的东西,因为它不起作用,但这是为什么呢?

我希望有人可以对此有所了解或指出我的一些好读物。

谢谢。

【问题讨论】:

看看有没有帮助***.com/questions/3679239/… 在阅读了这些人的讨论/争论之后,我仍然有点困惑。如果继承 UIButton 是安全的,为什么必须使用 IB 来更改其类型?似乎有点骇人听闻。你怎么看? 期待提到的原因here in Apple docs 我不认为继承 UIButton 是个好主意。考虑继承 UIView 或使用自定义 UIButton 类型。 【参考方案1】:

当我想做一个自定义按钮时,我遇到了同样的问题。我还阅读了许多似乎没有找到继承UIButton 的正确方法的帖子。在您的情况下,我建议继承 UIButton 并覆盖 setHighlighted: 方法来调整选择按钮。我有一个名为LDGradientButtonUIButton 子类,可以在lightdesign/LDGradientButton 找到。随意看看绘图代码。在我的例子中,我使用的是CALayers,但如果我重新开始,我可能会使用CoreGraphics

【讨论】:

以上是关于使用自定义 drawRect 代码创建 UIButton LIKE 控件的主要内容,如果未能解决你的问题,请参考以下文章

使用drawrect自定义UIView动画

通过循环 drawRect 动画自定义贝塞尔路径

即使使用 UIViewContentModeScaleAspectFill 也会调用自定义 UIView drawRect

我真的需要在自定义 UIView 中使用 drawRect() 吗?

具有自定义 drawRect 的单视图 iOS 应用程序

手动调用 Drawrect