2011-11-29 142 views
6

我正在为iPad应用程序编程创建按钮。当我看到按钮时,它看起来像是一个阴影类型的东西。它是什么,我如何摆脱它?我的按钮上有一个阴影

shadow button

这里是创建它的代码:

UIButton *myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
myButton.titleLabel.font = [UIFont fontWithName:@"Trebuchet MS" size:12]; 
[myButton setTitle:@"test" forState:UIControlStateNormal]; 
myButton.frame = CGRectMake(0, 0, self.leftScrollView.frame.size.width, 50); 

UIImageView *myImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"gear12.png"]]; 

[myButton addSubview:myImageView]; 
[self.leftScrollView addSubview:myButton]; 

UPDATE:

好吧,我发现我只得到这种效果,当它在我的滚动视图。如果我将它添加到视图中,则无阴影效果。

顶部测试按钮,该按钮是视图的子视图。底部按钮是scrollview的子视图,它是视图的子视图(按钮/视图vs按钮/滚动视图/视图)。

白色部分是视图,灰色是滚动视图/视图。

shadow effect 2

更新2:

由robmayor指出,UIButtons总是有双线的效果,只是没有都明显时,背景色为白色。蓝色是视图,灰色是子视图滚动视图。

enter image description here

+0

这可能是有用的: http://stackoverflow.com/questions/18341319/how-to-get-rid-of-gap-around-round-rect-button –

回答

5

在iPad上,圆角矩形UIButton沿其底边总是绘制一条白线。如果按钮的超级视图是白色的,则无法看到该白线,但它仍然存在。

您有几种选择:

  • 充分利用上海华白。这是最简单的,但你可能不喜欢它的外观。

  • 在您喜欢的图像编辑器中制作一些圆角矩形图像。将按钮类型设置为自定义,并将圆角矩形图像设置为按钮的图像。

  • 创建UIButton的子类并覆盖其drawRect:方法。

  • 设置按钮类型自定义和使用该按钮的层特性(button.layer.backgroundColorbutton.layer.borderColorbutton.layer.borderWidthbutton.layer.cornerRadius),得到按钮圆角的矩形的外观。如果您想让按钮像普通按钮一样变蓝,则必须在触摸按钮时更新button.layer.backgroundColor。 (其实正常的使用蓝色渐变。)

+0

这个苹果相当愚蠢。使添加一个简单的按钮更复杂,然后它需要。谢谢。 – Padin215

+0

看起来,一个圆角矩形按钮实际上是绘制为单个分组样式的UITableViewCell,因此继承了底部的白色边框。这个白色边框对于标准分组式样表格背景上的底部单元格看起来很棒。但将按钮设置为相同的绘图代码对苹果来说是一个糟糕的选择。 – matt

-1

替换[UIButton buttonWithType:UIButtonTypeRoundedRect]有:

UIButton *myButton = [UIButton new]; 

或:

UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom]; 

您希望您的自定义按钮。如果需要,您仍然可以使用圆角。

+1

为什么这会有所作为吗?圆形矩形按钮通常不会像这样两次自己绘制。 OP更可能无意中在大致相同的地方绘制两个按钮。 – matt

+0

我现在只在我的代码中添加单个按钮。我用更新的信息更新了我的问题。第二个图像,我只是在IB中拖动按钮。 – Padin215

+0

@matt,圆形矩形按钮绝对是这样画的。在IB中检查它自己是微不足道的。 –

9

这个问题是老(6个月),但i'have找到了解决删除/屏蔽的双回线这样不好的影响。

[yourButton.layer setBackgroundColor: [[UIColor blackColor]CGColor]]; 
[yourButton.layer setBorderWidth:1.0f]; 
[yourButton.layer setBorderColor:[[UIColor blackColor]CGColor]]; 
[yourButton.layer setShadowOpacity:0.1f]; 
[yourButton.layer setCornerRadius:10]; 

所选的UIColor取决于您的视图的当前背景。

结果:enter image description here

+0

这会在按钮中创建一个黑色边框。更好地工作,但不能删除该行。 – Rodrigo

+0

这是完美的! (虽然我不确定是否需要设置背景颜色或阴影不透明度。) – fumoboy007