我的按钮上有一个阴影

时间:2011-11-29 19:41:15

标签: iphone objective-c ios

我正在为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];

更新:

好吧,我注意到我只在滚动视图中得到了这个效果。如果我将它添加到视图中,没有阴影效果。

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

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

shadow effect 2

更新2:

正如robmayor所指出的,UIButtons总是具有双线效果,当背景颜色为白色时不明显。蓝色是视图,灰色是子视图滚动视图。

enter image description here

3 个答案:

答案 0 :(得分:9)

这个问题很老(6个月),但我找到了一个解决方案来删除/掩盖双线的这种不良影响。

[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

答案 1 :(得分:5)

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

您有几个选择:

  • 让superview变白。这是最简单的,但你可能不喜欢它的外观。

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

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

  • 将按钮类型设置为自定义,并使用按钮的图层属性(button.layer.backgroundColorbutton.layer.borderColorbutton.layer.borderWidthbutton.layer.cornerRadius)为按钮提供圆角矩形出现。触摸按钮时,如果您希望它像普通按钮一样变蓝,则必须更新button.layer.backgroundColor。 (实际上,普通的使用蓝色渐变。)

答案 2 :(得分:-1)

[UIButton buttonWithType:UIButtonTypeRoundedRect]替换为:

UIButton *myButton = [UIButton new];

或:

UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];

您想拥有自定义按钮。如果需要,你仍然可以使用圆角。