UIButton怪异的阴影行为

时间:2013-09-22 13:00:22

标签: ios objective-c uibutton ios7

我正在努力实现一些微不足道的事情。我想给我的UIButton应用一个阴影;没有阴影半径。这对我来说似乎不起作用。一旦我将阴影半径设置为0,阴影就会完全消失,而将其设置为任何其他值将正常绘制阴影。

这是我的代码:

 btn = [UIButton buttonWithType:UIButtonTypeCustom];
        btn.frame = CGRectMake(10, someView.frame.size.height-150, someView.frame.size.width-20, 60);
 btn.backgroundColor = UIColorFromRGB(kOrangeColor, 1.0f);
 btn.layer.cornerRadius = kCornerRadius;
 btn.titleLabel.font = kEdmondsansBold(24.0f);
 [btn addTarget:self action:@selector(doSomethingFancy) forControlEvents:UIControlEventTouchUpInside];
 btn.layer.shadowOffset = CGSizeMake(0, 2);
 btn.layer.shadowColor = UIColorFromRGB(0xff2400, 1.0f).CGColor;
 btn.layer.shadowOpacity = 1.0f;
 btn.layer.shadowRadius=  0.0f;
 [btn setTitleColor:UIColorFromRGB(0xffffff, 1.0f) forState:UIControlStateNormal];
 [btn setTitle:@"Fancy fancy" forState:UIControlStateNormal];
 [someView addSubview:btn];

1 个答案:

答案 0 :(得分:1)

radius设置为0时,正如您所期望的那样 阴影'消失'。

但它没有,它只是隐藏在按钮后面。

要获得实体阴影,您还必须设置如下偏移:

button.layer.shadowOffset = CGSizeMake(xOffset, yOffset);

如果你想在所有边上添加阴影,那么你应该考虑使用边界而不是阴影:

button.layer.borderColor = [UIColor blackColor].CGColor;
button.layer.borderWidth = 3.f;