导航栏背景图片太大

问题描述:

我想在我的设置方法中使用setBackgroundImage: forBarMetrics:更改导航栏的背景图片。导航栏背景图片太大

问题是图像不适合在杆上,看起来像图像的至少两倍的原始尺寸拉伸...

的图像尺寸为320×44 ...

我试图重新命名图像@ 2倍,但它并没有改变任何事情......

我想这个图像分配给navigationItem.titleView但视图得到了切断的边缘...

没有任何人有提示如何设置图像,以便它不会被拉伸?

UINavigationBar *naviBar = [self.navigationController navigationBar]; 
UIImage *img = [UIImage imageNamed:@"[email protected]"]; 
[naviBar setBackgroundImage:img forBarMetrics:UIBarMetricsDefault]; 

在此先感谢

+0

请参阅您的代码 – Deepesh 2012-07-20 10:04:33

+0

添加代码,请大家看看谢谢! – 2012-07-20 10:20:56

+0

不!不要将图像重命名为“@ 2x”。永远不要这样做,你将永远使用图像的非视网膜版本的UI元素。如果设备具有视网膜屏幕,“@ 2x”适用于iOS自动使用,而不是低分辨率图像。 – 2012-07-20 10:43:02

好吧,我终于明白了!

问题:导航栏拍摄的图像像素为320 x 44像素,因为iPhone中的每个点都是2像素,如果您使用的是导航栏的点,则您使用的图像看起来会像拉伸4倍(2x ,x坐标为2x)。

要解决它,只需将文件扩展名@ 2x添加到您的图像文件(例如[email protected])。在拖入Xcode之前,您必须重命名它!如果您尝试在Xcode中重命名,它将不起作用。

ps。不要包括@ 2X在你的代码,只是文件名像这样 [UIImage的imageNamed:@“yourImgName.png”]

希望这有助于

+0

只有视网膜iPhone每个点需要2个像素。这就是为什么你需要准备两套资产。 – Selkie 2012-07-25 03:07:19

+0

非常感谢分享。我的问题是我正在重命名xCode中的@ 2x。并且iOS不会将图像的缩放比例设置为2.谢谢 – pedros 2013-01-30 20:01:58

+2

注意:在Xcode(4.6)内重命名。 – 2013-02-01 04:05:43

你应该有两个图像。一个是320x44像素,名称为NavBar02.png。另一个是640x88像素,名称为[email protected]

iOS将根据设备的分辨率选择合适的图像。