Я пытаюсь добавить тень в UINavigationController.У меня есть NavController, и я пытаюсь добавить тень, как в игровых центрах.У меня есть это до сих пор.Это работает на UINavigationnBar, но я пытаюсь заставить его работать на протяжении всего приложения.
CGColorRef darkColor = [[UIColor blackColor] colorWithAlphaComponent:.5f].CGColor;
CGColorRef lightColor = [UIColor clearColor].CGColor;
CAGradientLayer *newShadow = [[[CAGradientLayer alloc] init] autorelease];
newShadow.frame = CGRectMake(0, 44, 320, 10);
newShadow.colors = [NSArray arrayWithObjects:(id)darkColor, (id)lightColor, nil];
CALayer *superlayer = self.newShadow.superlayer;
[self.newShadow removeFromSuperlayer];
[superlayer addSublayer:self.newShadow];
[self.navigationBar.layer addSublayer:superlayer];
Он работает непосредственно на панели UINavigationBar, но при применении к проекту NavigationController происходит сбой.Он строит, но не добавляет тени.Есть идеи?
РЕДАКТИРОВАТЬ :
Я пробовал разные подходы к этому.Я успешно создал градиент, используя форму.
@implementation UINavigationBar (UINavigationBarCategory)
- (void)drawRect:(CGRect)rect {
UIImage *backgroundImage;
backgroundImage = [UIImage imageNamed:@"nav.png"];
[backgroundImage drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
CGContextRef context = UIGraphicsGetCurrentContext();
CGColorSpaceRef myColorspace = CGColorSpaceCreateDeviceRGB();
size_t num_locations = 2;
CGFloat locations[2] = { 1.0, 0.0 };
CGFloat components[8] = { 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.5 };
CGGradientRef myGradient = CGGradientCreateWithColorComponents(myColorspace, components, locations, num_locations);
CGPoint myStartPoint, myEndPoint;
myStartPoint.x = 0.0;
myStartPoint.y = 0.0;
myEndPoint.x = 0.0;
myEndPoint.y = 54.0;
CGContextDrawLinearGradient (context, myGradient, myStartPoint, myEndPoint, 1);
}
Я не могу получить градиент ниже UINavigationBar и его наложения на изображение.Я не могу заставить это работать.То, что я пытаюсь сделать, это добавить ту же тень, что и в Game Center.Я пробовал несколько разных способов.Все, что мне нужно здесь сделать, это заставить это лежать под UINavigationBar, позволяя изображению быть сверху и иметь небольшую часть тени, лежащей сверху на UITableView, поэтому, когда вы прокручиваете его выше UITableView.Если вы запустите Game Center, вы точно поймете, о чем я говорю.