【问题标题】:Set CALayer Gradient Background设置 CALayer 渐变背景
【发布时间】:2015-09-01 19:35:44
【问题描述】:

我正在尝试向我创建的 CALayer 添加渐变。我可以使用以下方法设置 CALayer 的背景颜色:

self.colorLayer = [CALayer layer];
[self.colorLayer setBackgroundColor:color.CGColor]; 
[self.colorView setWantsLayer:YES]; 
[self.colorView setLayer:self.colorLayer];

我环顾四周没有成功(令人惊讶的是,我认为这会得到多次回答)。

我做了一个渐变:

NSGradient *gradient = 
    [[NSGradient alloc] initWithStartingColor:[NSColor orangeColor] 
        endingColor:[NSColor lightGrayColor]];

但无法将其添加到我的 CALayer 或添加角度。

【问题讨论】:

    标签: objective-c xcode macos cocoa cocoa-touch


    【解决方案1】:
        CAGradientLayer *gradient = [CAGradientLayer layer];
        gradient.colors = [NSArray arrayWithObjects:(id)[[NSColor whiteColor] CGColor], (id)[[NSColor greenColor] CGColor], nil];
        gradient.frame = self.colorView.bounds;
        [self.colorView setLayer:gradient];
        [self.colorView setWantsLayer:YES];
    

    【讨论】:

    • 我只是想一旦代码工作就将其放入,我不确定如何处理“将 CAGradientLayer 分配给其图层属性?”
    【解决方案2】:

    您不需要向 CALayer 添加渐变,因为您可以改用 CAGradientLayer。

    【讨论】:

    • 好的,所以我有一个带有 xib 文件的新 viewController,我使用 self.gradientView = [[GradView alloc] initWithNibName:@"GradView" bundle:nil]; [self.view addSubview:self.gradientView.view]; self.gradientView.view.frame = ((NSView*)self.view).bounds;
    • 如何将此视图的背景颜色添加为渐变?
    • 将 CAGradientLayer 分配给其 layer 属性?
    • CAGradientLayer *gradient = [CAGradientLayer 层]; gradient.colors = [NSArray arrayWithObjects:(id)[[NSColor whiteColor] CGColor], (id)[[NSColor greenColor] CGColor], nil]; [self.gradientView.view.layer addSublayer:gradient];????
    • 您的最后一行应该是self.gradientView.layer = gradient;,因为正如@matt 所说,您可以设置视图的层(可以简单地替换它的根层 - 无需将渐变层添加为子层)。
    【解决方案3】:

    Swift 4 版本的this answer

        let gradient = CAGradientLayer()
        gradient.colors = [NSColor.hlpMarineBlue, NSColor.hlpDarkishBlue, NSColor.hlpOceanBlue]
        gradient.frame = self.backgroundView.bounds;
        self.colorView.layer = gradient
        self.colorView.wantsLayer = true
    

    【讨论】:

      猜你喜欢
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多