使用alloc后如何初始化UIButton的类型?
Posted
技术标签:
【中文标题】使用alloc后如何初始化UIButton的类型?【英文标题】:How to init UIButton's type after using alloc? 【发布时间】:2012-04-07 13:25:50 【问题描述】:我知道我们可以使用buttonWithType
方法来获取具有特定类型的 UIButton。
UIButton * button = [UIButton buttonWithType:(UIButtonTypeRoundedRect)];
今天随便用UIButton的alloc/init方法来创建一个UIButton:
UIButton * button = [[UIButton alloc] initWithFrame:CGRectMake(20, 300, 100, 50)];
然后我发现没有办法改变按钮的类型。因为UIButton的buttonType属性是只读的。
在 UIKit.framework 中,UIButton.h :
@property(nonatomic,readonly) UIButtonType buttonType;
我的问题是:如果我使用 alloc/init 创建 UIButton,我可以更改 UIButton 的类型吗?如果没有,由于UIButton中有NOT任何像-initWithType
这样的init方法,我们只能使用+buttonWithType
方法来获得一个自动释放的UIButton。听起来有点奇怪,为什么不提供一个initWithType方法呢?
【问题讨论】:
为什么不先用initWithType: 创建按钮,然后再改变他的框架? @Mat 嗨,initWithType
方法在 UIButton 中不存在。
对不起,我的意思是 buttonWithType:
【参考方案1】:
如果 +buttonWithType 为您处理,为什么还要分配和初始化?像这样扭转你的想法:
UIButton * button = [UIButton buttonWithType:(UIButtonTypeRoundedRect)];
[button setFrame:CGRectMake(20, 300, 100, 50)];
【讨论】:
感谢您的回答。我通常使用buttonWithType
。今天随便发现了这个问题,想知道有没有设计目的。
我想这是因为他们还没有确定切换按钮类型的方法。
我认为你的想象是合理的。谢谢,我只是想确认一下。以上是关于使用alloc后如何初始化UIButton的类型?的主要内容,如果未能解决你的问题,请参考以下文章