0

我使用代码

NSArray *buttons = [NSArray arrayWithObjects: self.rollBtn,nil];        
for(UIButton *btn in buttons)
{       
    btn.layer.shadowRadius = 3.0;
    btn.layer.shadowOffset = CGSizeMake(-2.0, -3.0);
    btn.layer.shadowOpacity = 0.5;
    btn.layer.shadowColor = [UIColor blackColor].CGColor;
    CAGradientLayer *btnGradient = [CAGradientLayer layer];
    btnGradient.frame = btn.bounds;
    btnGradient.colors = [NSArray arrayWithObjects:
                          (id)[[UIColor colorWithRed:102.0f / 255.0f green:102.0f / 255.0f blue:102.0f / 255.0f alpha:1.0f] CGColor],
                          (id)[[UIColor colorWithRed:51.0f / 255.0f green:51.0f / 255.0f blue:51.0f / 255.0f alpha:1.0f] CGColor],
                          nil];

    [btn.layer insertSublayer:btnGradient atIndex:0];            
}

但我得到的只是一个带有阴影的按钮。我已经链接了石英核心库,我已经导入了它,我已经链接了按钮,我尝试使用不同类型的按钮;我被难住了。任何想法出了什么问题?提前致谢。

4

3 回答 3

1

我遇到了同样的问题。看来您和我一样正在为 iOS6 构建。我发现 iOS6 中引入的故事板自动布局会导致此类问题。如果您不使用此功能,只需禁用它:

  1. 在 Xcode 中打开故事板
  2. 故事板的打开属性(带有属性的右窗格)
  3. 在“Interface Builder Document”部分取消选中“Use Autolayout”。
于 2012-11-13T20:34:15.683 回答
0

我认为您可以尝试删除CAGradientLayer按钮中以前存在的任何内容:

for(CALayer* layer in btn.layer.sublayers)
    if ([layer isKindOfClass:[CAGradientLayer class]])
        [layer removeFromSuperlayer];

然后添加你自己的。

于 2012-10-28T09:17:41.473 回答
0

您是否尝试为渐变设置位置和起点/终点?

btnGradient.locations  = @[@(0.), @(1.)];
btnGradient.startPoint = (CGPoint){0., 0.};
btnGradient.endPoint   = (CGPoint){0., 1.};
于 2012-10-28T09:13:32.787 回答