将自定义编码图像应用于Interface Builder中的Round Rect按钮时出现问题

时间:2011-01-10 20:06:49

标签: iphone objective-c uibutton

我正在编写一些教程,介绍使用Obj-C在iPhone编程中将自定义图像应用到UIButtons的方法。

我喜欢的一种方法是使用Interface Builder在XIB上放置UIButton(圆形矩形按钮),然后在XIB视图控制器的'viewDidLoad'方法中为按钮设置外观:

UIImage *ButtonImageNormal = [UIImage imageNamed:@"button_blue.png"];
UIImage *StretchableButtonImageNormal = [ButtonImageNormal stretchableImageWithLeftCapWidth:24 topCapHeight:24];
[self.Button setBackgroundImage:StretchableButtonImageNormal forState:UIControlStateNormal];

UIImage *ButtonImagePressed = [UIImage imageNamed:@"button_orange.png"];
UIImage *StretchableButtonImagePressed = [ButtonImagePressed stretchableImageWithLeftCapWidth:24 topCapHeight:24];
[self.Button setBackgroundImage:StretchableButtonImagePressed forState:UIControlStateHighlighted];

此方法的问题在于按钮不会丢失其“圆形矩形”背景,并且在按钮的侧面仍然可以看到“圆形矩形”按钮的白色透过自定义图像。 / p>

但是,如果我使用以下代码从头开始创建自定义按钮:

UIButton *CustomButton = [UIButton buttonWithType:UIButtonTypeCustom];
[CustomButton setFrame:CGRectMake(20, 100, 280, 45)];
[CustomButton.titleLabel setFont:[UIFont boldSystemFontOfSize:15]];

[CustomButton setTitle:@"Custom Button" forState:UIControlStateNormal];
[CustomButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[CustomButton setBackgroundImage:[UIImage imageNamed:@"button_blue.png"] forState:UIControlStateNormal];

[CustomButton setTitleColor:[UIColor whiteColor] forState:UIControlStateHighlighted];
[CustomButton setBackgroundImage:[UIImage imageNamed:@"button_orange.png"] forState:UIControlStateHighlighted];

[self.view addSubview:CustomButton];

没有这样的白色背景偷窥。

我真的想使用放置和蒙皮按钮的'Round Rect'方法,因为我想在Interface builder中查看它们的位置。有没有我需要使用的方法或我需要修改的属性来摆脱代码中'Round Rect'按钮的白色背景。

这是显示问题的图片:

alt text

2 个答案:

答案 0 :(得分:4)

我找到了答案!

典型的是,你花了几个小时寻找手册才能在发布后找到它!

只需在Interface Builder中将按钮类型更改为“自定义”,无需额外代码!

alt text

答案 1 :(得分:0)

使按钮的默认颜色为“清晰颜色”,有趣的黑白对角线。