Mam UITableViewController do którego z powodzeniem stosowane w przeszłości gradient w tle, wysyłając nowo dodany podrzędny do tyłu:sendSubviewToBack na UITableView nie działa poprawnie w iOS 11
//performed on viewDidLoad
UIView *bgView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1.5*280, 1.5*SCREEN_HEIGHT)];
bgView.backgroundColor = [UIColor yellowColor];
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = bgView.bounds;
gradient.startPoint = CGPointMake(0, 0);
gradient.endPoint = CGPointMake(1, 1);
UIColor *topColor = UIColorFromRGB(0x229f80);
UIColor *bottomColor = UIColorFromRGB(0x621ad9);
gradient.colors = [NSArray arrayWithObjects:(id)[topColor CGColor], (id)[bottomColor CGColor], nil];
[bgView.layer insertSublayer:gradient atIndex:0];
[self.view addSubview:bgView];
[self.view sendSubviewToBack:bgView];
bgView = nil;
Jednak to nie działa w systemie iOS 11 i bgView jest rzeczywiście umieszczony na górze wszystkich komórek.
Ktoś wie jak mogę rozwiązać ten problem? A może robiłem to źle przez cały czas?
[self.view sendSubviewToBack: bgView]; zamiast tego spróbuj tej metody - (void) exchangeSubviewAtIndex: (NSInteger) index1 withSubviewAtIndex: (NSInteger) index2 – Ellen