iphone - 从 iOS 4 切换到 5 时出现 NavigationBarStyle 问题

标签 iphone ios coding-style navigationbar

升级到 iOS 5 和 Xcode 4.2 后有一点设计问题

这就是我在 iOS 4 中的 View :

1 http://casperslynge.dk/1

这就是它在 iOS 5 中的样子:

2 http://casperslynge.dk/2

在我的导航委托(delegate)中,我有以下方法在顶部绘制“图像”:

- (void)drawRect:(CGRect)rect {
    UIImage *image;
    if(self.barStyle == UIBarStyleDefault){
        image = [UIImage imageNamed: @"topbar_base.png"];
    }
    else{
        image = [UIImage imageNamed: @"nyhedsbar_base.png"];    
    }
    [image drawInRect:CGRectMake(-1, -1, self.frame.size.width+3, self.frame.size.height+3)];
}

在我的 Controller 内部,我设置了以下内容:
self.navigationBarStyle = UIBarStyleBlack;

为什么它在 iOS 5 中不起作用?

谢谢

最佳答案

iOS5下需要使用UIAppearance .看看那个。这是一个有条件地使用它的示例,以便您可以继续支持 iOS4:

// iOS5-only to customize the nav bar appearance
if ([[UINavigationBar class] respondsToSelector:@selector(appearance)]) {
    UIImage *img = [UIImage imageNamed: @"NavBarBackground.png"];
    [[UINavigationBar appearance] setBackgroundImage:img forBarMetrics:UIBarMetricsDefault];
}

如您所见,这为所有 UINavigationBars 设置了自定义背景图像。你可以用 UIAppearance 做很多事情。您需要将当前正在执行的任何自定义内容保留在 drawRect: 中。因为 iOS4 之前的设备仍将使用它,而不是新的 UIAppearance 代码。

关于iphone - 从 iOS 4 切换到 5 时出现 NavigationBarStyle 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7811300/

相关文章:

c++ - Vim:将连续的行与空格对齐

iphone - 从两个 UIImageView 创建一个 UIImage

iPhone在线登录系统

iPhone - 尝试在 quartz 中创造发际线

iphone - 在 RemoteViewControllers 上禁用 UIAppearance-API

ios - 计算属性中的自调用

iphone - 在 Storyboard 中以编程方式访问 UIViewController

python - TensorFlow:是否有一种方法可以在变量范围内初始化变量(如果未初始化),并重用它们(如果已初始化)?

c++ - 类中的指针与变量

ios - ios7 后台获取调用一次