我的UINavigationitem的TitleView在iOS 6中被扩展了

4

在我的应用程序中,我在uinavigation item上应用了一张图片。在iOS 5上运行正常,但在iOS 6上却变形了。我的导航栏中没有左右bar button项。我搜索了很多,但找不到答案。

以下是我的代码:

UIImageView *navigationImage=[[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 98, 34)];
navigationImage.image=[UIImage imageNamed:@"topNav-logo.png"];
self.navigationItem.titleView=navigationImage;

图片应该显示为下图所示:

屏幕截图

但在iOS 6中,它显示为扩展的形式,而不是像下图一样,而在iOS 5中它可以正常工作。

结果如下:

结果屏幕截图


1
请提供一些代码(如何添加图像)和屏幕截图! - rdurand
2个回答

5
我遇到了与iOS 6相同的问题,并找到了一个最疯狂的解决方法: 创建一个尺寸相同的UIImageView。然后将navigationImage作为子视图添加到其中。在我的情况下,这将防止自动调整大小。
UIImageView *workaroundImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 98, 34)];
[workaroundImageView addSubview:navigationImage];
self.navigationItem.titleView=workaroundImageView;

如果有人找到了适当的解决方案或解释,请发帖分享。


谢谢Vanja,它解决了我的问题,但我想知道问题出在哪里。 - iEinstein
尝试设置原始图像的contentMode: navigationImage.contentMode = UIViewContentModeCenter; - Bart Vandendriessche
不,这既没有将titleView居中,也没有将其适应imageView的框架。 - Henrik Erlandsson

0
我在我的项目中有以下代码,在iOS 5和iOS 6下运行良好。你能试试这个吗?
self.navigationItem.titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"topNav-logo.png"]];

此外,请确保图像同时具有@2x和常规尺寸。

我使用了这个解决方案,但结果仍然与以前一样,并且我始终拥有@2x图像,因为我的最低部署目标是iOS 5.0。如果您想查看结果,我可以在上面展示给您看。 - iEinstein
嗯,这很有趣。您能否验证常规和@2x图像是否命名相同(可能是打字错误?)并且常规和@2x图像实际上具有正确的尺寸(在我的情况下,常规图像为120x20,@2x为240x40)? - nikolovski
我通常会以双倍分辨率拍摄图片,因为这里的图片尺寸是195×68像素,但图片视图框架是98 x 34像素。 - iEinstein

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接