簡體   English   中英

CAGradientLayer的問題

[英]Problems with CAGradientLayer

我正在使用代碼

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];            
}

但是我所得到的只是一個帶有陰影的按鈕。 我已經鏈接了石英內核庫,我已經導入了它,我已經鏈接了按鈕,我嘗試使用不同類型的按鈕。 我被困住了。 任何想法出什么事了嗎? 提前致謝。

我遇到了同樣的問題。 看來您像我一樣正在為iOS6進行構建。 我發現iOS6中引入的用於情節提要的自動版式正在引起此類問題。 如果不使用此功能,只需禁用它:

  1. 在Xcode中打開情節提要
  2. 打開情節提要的屬性(帶有屬性的右窗格)
  3. 在“ Interface Builder文檔”部分中取消選中“使用自動版式”。

您是否嘗試過設置漸變的位置和起點/終點?

btnGradient.locations  = @[@(0.), @(1.)];
btnGradient.startPoint = (CGPoint){0., 0.};
btnGradient.endPoint   = (CGPoint){0., 1.};

我認為您可以嘗試刪除按鈕中以前存在的任何CAGradientLayer

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

然后添加您自己的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM