iPhone:在导航栏中设置背景图像是不合适的

时间:2012-07-09 19:28:43

标签: iphone uinavigationbar

我有一个表格视图,我想制作一个自定义的uinavigationn栏我试过这段代码

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, self.view.bounds.size.width, self.view.bounds.size.height)];
//here for v, width= navBar width and height=navBar height
//    
[view setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"newsBanner.png"]]];
[self.navigationController.navigationBar addSubview:view];

问题是图像没有居中,因为它的尺寸是640 x 72 ...有没有办法使它适合?

1 个答案:

答案 0 :(得分:2)

您的导航栏应该只有44像素高。最重要的是,它最大宽度为320点(视网膜设备为640像素,非高清设备为320像素)。所以你的图像尺寸太大了。制作尺寸为320x44的图像,然后执行以下操作:

UINavigationBar *theBar = self.navigationController.navigationBar;
if ( [theBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)] ) {
    UIImage *image = [UIImage imageNamed:@"your image here"];
    [theBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
}

当然,这只适用于iOS 5.您需要找到其他方法来处理在5.0以下的操作系统上设置背景。但是有很多堆栈溢出问题可以解决这个问题:)