为了账号安全,请及时绑定邮箱和手机立即绑定

为什么不应该继承UIButton?

为什么不应该继承UIButton?

iOS
守着一只汪 2019-11-02 13:22:07
我曾问过一些关于将a继承为子类的问题UIButton,有几个人告诉我我不应该对a进行子类化UIButton。子类化a的负面影响是UIButton什么?而且我知道这很模糊,但是将a子类化的其他替代方法还有哪些UIButton?
查看完整描述

3 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

这是因为它的UIButton特殊之处在于,+buttonWithType:为了使其按预期工作,需要一些复杂性/微妙性/限制(即,特别是供您定义的其他替代)。它比通常的-initWithFrame:(和-initWithCoder:,如果在XIB中使用)要多。IDK为什么框架作者允许这些细节泄漏到我们的域中,但这是我们现在必须解决的问题。限制是您的实现不得依赖(即扩展)预设的系统按钮样式。您必须假设UIButtonTypeCustom作为UIButton子类的起点。



查看完整回答
反对 回复 2019-11-02
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

如果您只是想通过自己的“子视图”来寻找更轻量的东西,则应该将UIControl子类化。UIButton子类化UIControl并可以处理事件,例如:


[mySubclassedButtonFromUIControl addTarget:self action:@selector(_doSomething:) forControlEvents:UIControlEventTouchUpInside];

UIControl子类化UIView,因此您可以在UIControl子类包含的任何视图上干净地layoutSubviews,并避免UIButton附带的不必要的视图。从本质上讲,您只是在创建自己的“ UIButton”,而避免了不必解决的行为和功能。


查看完整回答
反对 回复 2019-11-02
  • 3 回答
  • 0 关注
  • 542 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信