Градиент на основе uicolor не работает

Я пытаюсь создать градиент, используя некоторые пользовательские UIcolors, которые я создал, но все, что появляется, является белым, когда я запускаю приложение. Я создал цвета в делегате приложения, чтобы использовать их в приложении, и это код, который я использовал для них:

//AppDelegate.h

#import <UIKit/UIKit.h>

@interface AppDelegate : UIResponder <UIApplicationDelegate>
+ (UIColor*)blueColor1;
+ (UIColor*)blueColor2;
+ (UIColor*)yellowColor1;

@property (strong, nonatomic) UIWindow *window;

@end

//AppDelegate.m

+ (UIColor*)blueColor1 {
    return [UIColor colorWithRed:112.0 / 255.0 green:184.0 / 255.0 blue:255.0 / 255.0 alpha:1.0];
}
+ (UIColor*)blueColor2 {
    return [UIColor colorWithRed:190.0 / 255.0 green:243.0 / 255.0 blue:250.0 / 255.0 alpha:1.0];
}
+ (UIColor*)yellowColor1 {
    return [UIColor colorWithRed:245.0 / 255.0 green:243.0 / 255.0 blue:204.0 / 255.0 alpha:1.0];
}

А для самого градиента я использовал это:

CAGradientLayer *gradient = [CAGradientLayer layer];
    gradient.frame = self.view.bounds;
    gradient.colors = [NSArray arrayWithObjects:(id)[AppDelegate blueColor1], (id)[AppDelegate blueColor2], (id)[AppDelegate yellowColor1], nil];
    [self.view.layer insertSublayer:gradient atIndex:0];

Что мне нужно сделать, чтобы градиент отображался?


person ola-nihao-hello    schedule 25.01.2016    source источник
comment
Вы действительно хотите использовать литералы коллекций Objective-C: вместо [NSArray arrayWithObjects: this, that, nil] используйте @[this, that].   -  person jcaron    schedule 26.01.2016
comment
Возможный дубликат CAGradientLayer не работает   -  person Larme    schedule 26.01.2016


Ответы (1)


Из документации: свойство цвета:

Массив объектов CGColorRef, определяющих цвет каждой точки градиента. Анимация.

Поэтому вы хотите:

gradient.colors = @[(id)[AppDelegate blueColor1].CGColor, (id)[AppDelegate blueColor2].CGColor, (id)[AppDelegate yellowColor1].CGColor];
person Hamish    schedule 25.01.2016