CAGradientLayer аварий с "предоставление услуг по монтажу, плохой доступ" в простейшем случае использовать
Простой подкласс UIView, имеющий только следующий код:
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
// Initialization code
CAGradientLayer* gradientLayer = [CAGradientLayer layer];
gradientLayer.colors = [NSArray arrayWithObjects:[UIColor whiteColor], [UIColor blackColor], nil];
gradientLayer.locations = [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.0], [NSNumber numberWithFloat:1.0], nil];
[self.layer addSublayer:gradientLayer];
return self;
}
Убивает время выполнения с помощью EXC_BAD_ACCESS (и нет, зомби нет, прежде чем вы спросите).
Кроме того, это не CAGradientLayer становится чрезмерно освобожденным-размещение нескольких плавающих удерживающих элементов на слое не имеет никакого эффекта.
(Кстати, я никогда не видел, чтобы CAGradientLayer действительно работал,ни в одном проекте, в котором я был. Я думаю, что он проклят :). Я бы не стал его использовать, но мне нужны анимированные градиенты, а Apple Класс CGGradient поддерживает только массивы const, что делает анимационный код ужасно подверженным ошибкам)1 ответ:
Проблема может быть здесь:
Эти цвета должны быть основными графическими эквивалентами, чтобы это могло сработать.gradientLayer.colors = [NSArray arrayWithObjects:[UIColor whiteColor], [UIColor blackColor], nil];
gradientLayer.colors = [NSArray arrayWithObjects:(__bridge id)[UIColor whiteColor].CGColor, (__bridge id)[UIColor blackColor].CGColor, nil];