다음 코드는 ios6에서 잘 작동합니다. 보기에 위쪽 및 아래쪽 내부 알파 그라디언트를 적용해야합니다.iOS7에서 layer.mask 그래디언트가 단색입니다.
CAGradientLayer * gradient = [CAGradientLayer layer];
gradient.frame = self.bounds;
gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor clearColor] CGColor],
(id)[[UIColor whiteColor]CGColor],
(id)[[UIColor whiteColor]CGColor],
(id)[[UIColor clearColor] CGColor],
nil];
gradient.startPoint = CGPointMake(0.5, 0.0);
gradient.endPoint = CGPointMake(0.5, 1.0);
gradient.locations = [NSArray arrayWithObjects:@0,@(val),@(1.-val),@1,nil];
self.layer.mask = gradient;
BUT! iOS7에서이 코드를 실행하면 좋은 그라데이션 알파 그라디언트 대신 그라디언트의 "투명한"부분이 흰색으로 나타납니다.
하나의 문제는 색상이 색상 구성 요소의 수입니다. 흰색, 회색 및 검은 색은 2 가지 색상 구성 요소가 있지만 나머지는 4 가지입니다. 내장 색상 대신 흰색을 [UIColor colorWithRed : green : blue : alpha]로 변경하십시오. 도움이되지 않을 수도 있지만 시도해야 할 것입니다. – Putz1103
응답 해 주셔서 감사합니다. I 시도 : 'gradient.colors의 =있는 NSArray의 arrayWithObjects : (ID) [UIColor colorWithRed : 0 녹색 0 청색 0 알파 : 0] CGColor] (ID) [UIColor colorWithRed : 0 녹색 0 : 0 파랑 : 0 알파 : 1] CGColor], (id) [[UIColor colorWithRed : 0 녹색 : 0 파랑 : 0 알파 : 1] CGColor] 0 알파 : 0] CGColor], nil]; ' 같은 결과가 나왔습니다. – Mephes