Только что был перенесен на Xcode8 и iOS10, обеспечивая поддержку iOS10 для одного из приложений.
Выясните странную проблему, вдруг градиент не работает.
Я обнаружил, что после применения раскадровки (изменения раскадровки в Xcode8) изменяется градиент, невидимый для представлений.
Xcode 7.3 — градиентные представления —
Xcode 8 — градиентные представления —
Кроме того, если я заменю раскадровку старой раскадровкой, она покажет градиент, поэтому с новой раскадровкой что-то не так.
В коде нет изменений:
[view setOpaque:NO];
view.layer.cornerRadius = 45;
view.backgroundColor = [UIColor colorWithRed:23.0/255.0 green:29.0/255.0 blue:36.0/255.0 alpha:1.0];
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = view.bounds;
UIColor *color1 = [UIColor colorWithRed:33.0/255.0 green:39.0/255.0 blue:46.0/255.0 alpha:1.0];
UIColor *color2 = [UIColor colorWithRed:23.0/255.0 green:29.0/255.0 blue:36.0/255.0 alpha:1.0];
UIColor *color3 = [UIColor colorWithRed:14.0/255.0 green:20.0/255.0 blue:26.0/255.0 alpha:1.0];
NSArray *colorsArray = @[(id)color1.CGColor, (id)color2.CGColor, (id)color3.CGColor];
gradient.colors = colorsArray;
[gradient setLocations:@[@0.0, @0.35]];
[view.layer insertSublayer:gradient atIndex:0];
Дайте мне знать, если кто-нибудь понял это.
Изменить:
Я не создавал новую раскадровку, я просто применил ниже изменения, предложенные Xcode8.
nil
, и вы действительно применяете градиент. Установите фон в раскадровке на что-то другое, например пурпурный. - person paiv   schedule 20.10.2016