在iOS中,可以通过alloc和initWithFrame添加UIButton吗?

时间:2012-05-25 03:47:58

标签: iphone ios cocoa-touch uikit uibutton

可以通过以下方式添加按钮:

UIButton *myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
myButton.frame = CGRectMake(100, 100, 160, 50);
[myButton setTitle:@"click me" forState:UIControlStateNormal];
[self.view addSubview:myButton];

但我们可以使用initWithFrame方法:

UIButton *myButton2 = [[UIButton alloc] initWithFrame:CGRectMake(100, 300, 160, 50)];
//myButton2.buttonType = UIButtonTypeRoundedRect;
myButton2.titleLabel.text = @"click me";
[self.view addSubview:myButton2];

但上面的第2行被注释掉,因为它导致“只读”属性出错,并且该行被注释掉,仍然没有按钮显示...如果使用{{1,则可以添加UIButton开头?

更新:我设置黄色背景以查看视图的区域,发现按钮2的标签文本实际显示为白色的“click me”...但是触摸它有没有视觉效果......所以我想知道如何更改代码示例2以使其工作......)

1 个答案:

答案 0 :(得分:1)

是的,当然可以。我稍后再讨论一下readonly buttonType属性。一般的共识是,对于任何人来说,切换按钮的类型既没有安全的方式,也没有充分的理由。此外,+buttonWithType会返回UIButton的实例,就像+Alloc-init一样,所以这不是问题。