我试图将阴影添加到UINavigationController。我已经基于NavController,我试图添加像游戏中心一样的阴影。到目前为止,我有这个。它工作在UINavigationnBar但我试图让它在整个应用程序中工作。将阴影添加到UINavigationControllerer
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的梯度和它覆盖的图像。我似乎无法得到这个工作。我试图做的是添加相同的影子游戏中心。我尝试了几种不同的方法。我所需要做的就是让它位于UINavigationBar下面,让图像位于顶部,并将一小部分阴影置于UITableView的顶部,以便在UITableView上方向上滚动。如果你启动Game Center,你会看到我正在谈论的内容。
这是在'UINavigationController'子类吗? – BoltClock 2011-04-06 14:06:26
我试过一个子类,但它也没有工作。不,它在viewDidLoadAnimated中的UIViewController: – Frankrockz 2011-04-06 14:22:29