我試圖將陰影添加到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