【问题标题】:How to subclass UINavigationBar to work with Three20/iOS5?如何继承 UINavigationBar 以使用 Three20/iOS5?
【发布时间】:2011-10-14 19:17:38
【问题描述】:

你们中的许多人可能已经注意到,我们不能再创建一个类别来覆盖 iOS5 中的UINavigationBar drawRect。现在实际上,如果不使用UINavigationBar 的子类并将其设置在我的MainWindow.xib 中的navigationController->navigationBar 中,我看不到实现此自定义的好方法。但是,TTNavigator 无法识别navigationController,因为每个TTViewController 都有自己的TTNavigationController 超类。

【问题讨论】:

    标签: iphone ios uinavigationcontroller three20 uinavigationbar


    【解决方案1】:

    我不知道如何解决 Three20 的问题,但一般来说,为了支持 IOS 5,您可以使用此方法

    UIImage *image = [UIImage imageNamed:@"header.png"];
    
    if([navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)] ) {
        //iOS 5 new UINavigationBar custom background
        [navigationBar setBackgroundImage:image forBarMetrics: UIBarMetricsDefault];
    } 
    else{
        UIImageView *imgView = [[[UIImageView alloc] initWithImage:image] autorelease];
        [imgView setUserInteractionEnabled:NO];
        [imgView setTag:TOOLBAR_TAG];
        [navigationBar insertSubview:imgView atIndex:0];
    }
    

    【讨论】:

    • 我把这段代码放在一个辅助函数中,并在我的应用程序委托方法中调用它code- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    • 谢谢,我刚刚用stackoverflow.com/questions/7772382/…解决了这个问题
    • 这和你说的一样,但是我在应用程序委托中使用[UINavigationBar外观],但实际上我不知道如何处理iOS5以下的设备,因为它们不提供外观
    • 离开drawRect:在设置导航图片的appDelegate中,iOS5不会调用它,但它下面的所有东西都会调用。
    猜你喜欢
    • 1970-01-01
    • 2013-04-28
    • 2011-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    • 2020-01-17
    相关资源
    最近更新 更多