Я пытаюсь добавить несколько градиентов в различные UIScrollView и UITableView.Наиболее распространенный пример того, как этого добиться, с которым я сталкивался, - из удивительного блога Мэтта Галагера, где он опубликовал пример использования градиентов:
http://cocoawithlove.com/2009/08/adding-shadow-effects-to-uitableview.html
Хотя мой вопросКакие преимущества вы получаете, вставляя градиент в метод layoutSubviews по сравнению с настройкой градиента в методе viewDidLoad?Я понимаю, что при переходе по маршруту viewDidLoad вам придется обновлять представление вручную при изменении ориентации, но с точки зрения производительности может показаться, что этот метод будет вызываться только один раз при загрузке представления, а затем снова при изменении ориентации.В отличие от этого, метод layoutSubviews вызывается каждый раз, когда изменяется представление, что в случае с scrollview / tableview очень много!
//
// Construct the origin shadow if needed
//
if (!originShadow)
{
originShadow = [self shadowAsInverse:NO];
[self.layer insertSublayer:originShadow atIndex:0];
}
else if (![[self.layer.sublayers objectAtIndex:0] isEqual:originShadow])
{
[self.layer insertSublayer:originShadow atIndex:0];
}
[CATransaction begin];
[CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];
//
// Stretch and place the origin shadow
//
CGRect originShadowFrame = originShadow.frame;
originShadowFrame.size.width = self.frame.size.width;
originShadowFrame.origin.y = self.contentOffset.y;
originShadow.frame = originShadowFrame;
[CATransaction commit];
Кажется, он также изменяет размер фрейма при каждом вызове метода?Не лучше ли инициализировать и задать размер градиента в методе viewDidLoad, а затем выполнить любое изменение размера, когда / если ориентация изменится?
Уверен, что я что-то здесь упустил, поэтому любые пояснения будут оценены.* Thx