【发布时间】:2012-09-03 10:12:44
【问题描述】:
我正在尝试创建一个自定义 UIButton,但是当我将背景设置为清晰/透明时,它会用黑色填充框架的背景。我不是在 IB 中创建这些,我需要以编程方式执行此操作。我有什么遗漏吗?
UIButton* btn = [UIButton buttonWithType: UIButtonTypeCustom];
btn.frame = rect;
[btn addTarget: self action:@selector(toggleMaster) forControlEvents: UIControlEventTouchUpInside];
btn.opaque = NO;
btn.backgroundColor = [UIColor clearColor];
[btn setBackgroundImage: [UIImage imageNamed: [NSString stringWithFormat: @"%@_icon", self.currentKey]] forState: UIControlStateNormal];
[self addSubview: btn];
编辑:
我意识到我应该在 UIView 的drawRect 方法中提到我正在执行此操作。不好的做法?
【问题讨论】:
-
我没有发现任何问题。可能您使用的图像有黑色背景。你尝试过使用不同的图片吗?
-
我已经粘贴了你的代码。它工作正常。只需查看您是否在以下行设置了有效的 bg 图像:[btn setBackgroundImage: [UIImage imageNamed: [NSString stringWithFormat: @"%@_icon", self.currentKey]] forState: UIControlStateNormal];或者在那里给出一些硬编码的图像。
-
这可能与在 drawRect 方法中完成的有关吗?
-
你能粘贴你的drawrect代码吗?
-
我只是将它切换到init方法并注释掉
drawRect。我猜绘图方法不适用于按钮
标签: objective-c user-interface uibutton