Ipad NavigationBar景观问题 [英] Ipad NavigationBar Landscape Issue

查看:106
本文介绍了Ipad NavigationBar景观问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有办法为ipad横向/纵向模式使用不同的图像?我的导航栏中间包含一个徽标,虽然它在iphone上使用不同的图像效果很好,但我不能在iPad上使用不同的图像,因此当您转动设备时徽标不会居中。

is there a way to use a different images for the ipad landscape/portrait mode? My navigationbar contains a logo in the middle and while it works great on the iphone with different images, I can't use different images for the iPad so the logo isn't centered when you turn the device.

或者,我可以使用普通的背景图像,也许可以用图像替换导航栏标题或将按钮置于中心,但我也无法做到这一点。 (我没有UINavigationController子类)。

Alternatively, I can use a plain background image and maybe replace the navigation bar title with an image or center a button but I also couldn't manage to do that either. (I don't have a UINavigationController subclass).

这是我的代码,到目前为止在应用代理中执行了这个技巧:

here is my code that is doing the trick so far inside the app delegate:

if ([UINavigationBar respondsToSelector:@selector(appearance)]) {

        // Create resizable images for iphone
        UIImage *navbarImage44 = [[UIImage imageNamed:@"nav_bar"]
                                  resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];

        UIImage *navbarImage32 = [[UIImage imageNamed:@"nav_bar_landscape"]
                                  resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];

        // Overide for iPad
        // In theory navbar_bg_landscape~iPad should work
        if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
            //use iPad specific image extending last pixel for landscape mode
            [[UINavigationBar appearance] setBackgroundImage:[[UIImage imageNamed:@"nav_bar_ipad" ]
                                 resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)]
                                               forBarMetrics:UIBarMetricsDefault];

        }else {

            // Set the background image for *all* UINavigationBars
            [[UINavigationBar appearance] setBackgroundImage:navbarImage44
                                               forBarMetrics:UIBarMetricsDefault];

            // Never called on iPad, used for landscape on iPhone
            [[UINavigationBar appearance] setBackgroundImage:navbarImage32
                                               forBarMetrics:UIBarMetricsLandscapePhone];
        }



    }


推荐答案

我没有得到任何回应,所以我发现了一个工作,就是调整景观图像的大小。我现在还好。我正在调整我的肖像背景图片 - 这是我的iPad代码

I didn't get any response on this so I found a work around which is to resize the image on landscape. I'm ok with that for now. I'm resizing my portrait background image - here is my code for iPad


    // Create resizable images
                UIImage *ipadTabBarBG = [[UIImage imageNamed:@"nav_bar_ipad.png"]
                                            resizableImageWithCapInsets:UIEdgeInsetsMake(0, -260, 0, 0)];

// Set the background image for *all* UINavigationBars
            [[UINavigationBar appearance] setBackgroundImage:ipadTabBarBG
                                               forBarMetrics:UIBarMetricsDefault];


这篇关于Ipad NavigationBar景观问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆