为啥我的 CAGradientLayer 没有显示?

Posted

技术标签:

【中文标题】为啥我的 CAGradientLayer 没有显示?【英文标题】:How come my CAGradientLayer is not displaying?为什么我的 CAGradientLayer 没有显示? 【发布时间】:2017-03-09 17:22:00 【问题描述】:

我需要知道我做错了什么。我从字面上复制并粘贴到我的代码中,渐变没有显示。

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad 
    [super viewDidLoad];


    UIView *gradient_view = [[UIView alloc]initWithFrame:self.view.bounds];
    CAGradientLayer *gradient_layer = [CAGradientLayer layer];
    [gradient_layer setFrame:gradient_view.bounds];

    gradient_layer.startPoint = CGPointMake(0, 0);
    gradient_layer.endPoint = CGPointMake(0, 1);

    UIColor *top_color = [UIColor redColor];
    UIColor *bottom_color = [UIColor blueColor];
    [gradient_layer setColors:@[top_color,bottom_color]];
    [gradient_view.layer addSublayer:gradient_layer];
    [self.view addSubview:gradient_view];





- (void)didReceiveMemoryWarning 
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.



@end

它只是显示一个白屏。谁能帮我找出问题所在。因为它现在真的让我很烦。

【问题讨论】:

【参考方案1】:

你可能会踢自己:)

渐变层需要CGColorRef,而不是UIColor:

CGColorRef topRef = [UIColor redColor].CGColor;
CGColorRef botRef = [UIColor blueColor].CGColor;

[gradient_layer setColors:@[(__bridge id)topRef, (__bridge id)botRef]];

【讨论】:

以上是关于为啥我的 CAGradientLayer 没有显示?的主要内容,如果未能解决你的问题,请参考以下文章

没有显示 CAGradientLayer?

为啥在使用 CAGradientLayer 时应用会崩溃

CAGradientLayer不显示

CAGradientLayer:其他 UIObjects 没有出现

为啥我不能在 ARC 中使用自定义颜色创建 CAGradientLayer?

为啥在模态视图控制器被解除后 CAGradientLayer 从视图中删除