0

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

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 行被注释掉了,因为它会导致“只读”属性出现错误,并且注释掉了该行,仍然没有显示任何按钮...如果使用initWithFrame开头,可以添加 UIButton 吗?

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

4

1 回答 1

1

是的,当然可以。不久前,我对只读 buttonType 属性进行了一些讨论。普遍的共识是,任何人都没有安全的方法,也没有充分的理由来切换按钮的类型。此外,+buttonWithType返回 UIButton 的实例+Alloc-initdo 一样好,所以这不是问题。

于 2012-05-25T03:51:41.887 回答