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

button可以通过以下方式添加:

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行被注释掉,因为它导致了一个“只读”属性的错误,并与该行注释,仍然没有任何button显示…可以添加一个UIButton,如果使用initWithFrame开始?

更新:我设置了一个黄色背景来查看视图的区域,并发现button2的标签文本实际上显示为“点击我”白色但触摸它没有视觉效果…所以我想知道更改代码示例2使其工作…)

当然可以。 对于那个readonly buttonType属性,我稍微讨论了一下。 普遍的共识是,没有一个安全的方式,也没有一个好的理由,任何人切换一个button的types。 此外, +buttonWithType返回一个UIButton的实例,就像+Alloc-init do一样,所以这不是问题。