刚学习ios开发,UIButton控件显示不出来,求帮助~

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了刚学习ios开发,UIButton控件显示不出来,求帮助~相关的知识,希望对你有一定的参考价值。

UIButton *consumeRecord=[UIButton buttonWithType:UIButtonTypeRoundedRect]; consumeRecord.frame= CGRectMake(220.0f, 20.0f, 40.0f, 25.0f); [consumeRecord setTitle:@\"测试\" forState:UIControlStateNormal]; [self.view addSubview:consumeRecord];第二种是这样的,不能显示: UIButton *testBut=[[UIButton alloc]initWithFrame:CGRectMake(220.0f, 20.0f, 40.0f, 25.0f)]; testBut=[UIButton buttonWithType:UIButtonTypeRoundedRect]; [testBut setTitle:@\"测试\" forState:UIControlStateNormal]; [self.view addSubview: testBut]; [testBut release];小弟刚接触ios的开发,求指导,谢谢~

第二种方法你存在两个问题
1. 你先用alloc方式创建了testBut后,接着又用静态方法把testBut初始化了一次,就丢失了frame的信息,并且还存在内存泄露的问题,第一次alloc产生的内存成为了无法回收的部分。
2. UIButton比较特殊,并没有实现initWithFrame这个初始化方法,这个方法是它父类的父类UIView中的方法,并不能让它成为一个按钮,如果你是添加一个UIView进来的话改掉我说的第一个问题后倒是可以成功的。因此UIButton还是得用你的第一种方式来进行初始化,然后通过设置frame来确定它的位置即可。

至于能不能用alloc创建出来一个基类对象然后通过修改各种参数达到让它变成一个按钮的目的,我没有尝试过,但我想即使可以成功也会是一个异常复杂的过程。起码buttonType这个参数就是一个只读的
参考技术A fvgg

iOS UIButton 总是透明的

【中文标题】iOS UIButton 总是透明的【英文标题】:iOS UIButton is always transparent 【发布时间】:2013-09-16 15:56:15 【问题描述】:

我在 iphone 应用程序中有一个自定义视图,当满足条件时,它应该使屏幕变暗并向用户显示一些输入字段。

我没有问题禁用主控件和“调暗”屏幕(只是一个 alpha=0.6 的 UIView),但是我在上面显示的控件似乎总是有一些透明度(我可以阅读一些文本通过 UIButton),即使我将控件的 alpha 设置为 1.0 并设置 opaque=YES。我什至尝试在按钮和覆盖层之间放置一个额外的不透明层,它仍然是部分透明的。

供参考:(iOS 6.1)

UIView * overlay = [[UIView alloc] initWithFrame:parentView.frame];
overlay.backgroundColor = [UIColor blackColor];
overlay.alpha=0.6;

UIButton * button = [UIButton buttonWithType:UIButtonRoundedRect];
button.backgroundColor = [UIColor whiteColor];
button.alpha = 1.0;
button.opaque = YES;
[button setTitle:@"done" forState:UIControlStateNormal];
[button setFrame:CGRectMake(0.0,0.0,44.0,44.0)];

[overlay addSubview:button];
[parentView addSubview:overlay];

即使使用上面的代码,按钮也是透明的。有谁知道为什么以及如何使按钮不透明?

【问题讨论】:

你的意思是说你得到的按钮的 alpha 也是 0.6。我说得对吗? 【参考方案1】:

您可以部分看穿UIButton 的原因是因为它是覆盖UIView 的子视图,其alpha 为0.6。您需要执行以下操作:

// Create the overlay view just like you have it...
UIView *overlay = [[UIView alloc] initWithFrame:parentView.frame];
overlay.backgroundColor = [UIColor blackColor];
overlay.alpha = 0.6;

// Continue adding this to the parent view
[parentView addSubview:overlay];

// Create the button
UIButton *button = [UIButton buttonWithType:UIButtonRoundedRect];
button.backgroundColor = [UIColor whiteColor];
[button setTitle:@"Done" forState:UIControlStateNormal];
[button setFrame:CGRectMake(0.0, 0.0, 44.0, 44.0)];

// Add this button directly to the parent view
[parentView addSubview:button];

【讨论】:

谢谢,我很笨,一读就明白了。【参考方案2】:

我建议使用 opaque 功能,您将获得最佳实践:

使用 IB 使按钮不透明:选择所需按钮并在 Utilities 右侧栏转到 Attributes Inspector 并在 View 部分标记 Opaque 并且不要忘记更改背景。

之后,您必须以编程方式更改 UIButton 内标签的不透明:

yourButtonOutlet.titleLabel.opaque = true;
yourButtonOutlet.titleLabel.backgroundColor = [UIColor *YOUR DESIRED COLOR*];

了解apple 建议使用 opaque 以实现快速渲染。

【讨论】:

以上是关于刚学习ios开发,UIButton控件显示不出来,求帮助~的主要内容,如果未能解决你的问题,请参考以下文章

iOS UI基础控件之UIButton

iOS intrinsicContentSize内置尺寸

iOS:UIButton 不显示

IOS开发-UI学习-使用代码创建button

Android开发学习——UI篇1.0

IOS-OC-基本控件之UIButton