我有一個CAGradientLayer在viewDidLoad的背景上繪圖。它在某些時候有效,但有時候它只是不會持續渲染任何東西,直到我重新啓動計算機。我無法弄清楚爲什麼有些時候它會起作用,然後其他時候不會。它可以工作,讓5連續建立,然後它會停止渲染。沒有錯誤。任何人都有這方面的經驗?CAGradientLayer有時不渲染
背景層方法:
+ (CAGradientLayer*) morningGradient {
UIColor *mornTop = [UIColor colorWithRed:0.843 green:0.722 blue:0.667 alpha:1.000];
UIColor *mornBottom = [UIColor colorWithRed:0.584 green:0.733 blue:0.945 alpha:1.000];
NSArray *colors = [NSArray arrayWithObjects:(id)mornTop.CGColor, mornBottom.CGColor, nil];
NSNumber *stopOne = [NSNumber numberWithFloat:0.0];
NSNumber *stopTwo = [NSNumber numberWithFloat:0.7];
NSNumber *stopThree = [NSNumber numberWithFloat:1.0];
NSArray *locations = [NSArray arrayWithObjects:stopOne, stopTwo, stopThree, nil];
CAGradientLayer *headerLayer = [CAGradientLayer layer];
headerLayer.colors = colors;
headerLayer.locations = locations;
return headerLayer;
}
繪製方法:
-(void)drawGrad
{
NSLog(@"drawing gradient");
CAGradientLayer *bgLayer = [BackgroundLayer morningGradient];
bgLayer.frame = self.view.bounds;
[self.view.layer insertSublayer:bgLayer atIndex:0];
}
viewDidLoad中:
- (void)viewDidLoad
{
[self drawGrad];
[super viewDidLoad];
}
這聽起來合乎邏輯的。我會給這個鏡頭 - 謝謝!我在腦海中想象到第三個位置是混合點(所以將它移動到0.5以上會使兩個顏色混合在一起,就像在Photoshop中混合了像錨點那樣的50/50)。 – NessyString
謝謝大衛,這工作。這非常令人沮喪 - 我感到很蠢。 – NessyString