繁体   English   中英

导航栏项目拉伸按钮的图像

[英]Navigation Bar Item stretching image for button

我在情节提要中设置了一个导航栏,右边带有一个UIBarButton。

在此处输入图片说明

这是我用来为此更新映像的代码:

// Setup the right navigation bar item
[self.addGameButton setBackgroundImage:[UIImage imageNamed:@"addGameButton"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[self.addGameButton setTitle:@""];

图像在这里,是76x58(2倍)。 它是38x29(正常)。 在此处输入图片说明

在设备上运行时,图像正在拉伸,我不知道为什么? 在此处输入图片说明

backgroundImage属性用于为按钮的背景绘制可拉伸的图像。 如果要将图像放在按钮内,则可以尝试使用以下方法初始化UIBarButtonItem:

UIImage *image = [UIImage imageNamed:@"images/global/add"];
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStyleBordered target:nil action:nil];
[self.navigationItem setRightBarButtonItem:barButtonItem];

对您来说,您似乎有一张要替换整个按钮的图像。 您也可以尝试以下代码,该代码将创建一个自定义按钮作为UIBarButtonItem的视图:

UIImage *addImage = [UIImage imageNamed:@"images/global/add"];
UIButton *addButton = [UIButton buttonWithType:UIButtonTypeCustom];
[addButton setFrame:CGRectMake(0, 0, addImage.size.width, addImage.size.height)];
[addButton setBackgroundImage:addImage forState:UIControlStateNormal];
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:addButton];
[self.navigationItem setRightBarButtonItem:barButtonItem];

在情节提要中,您可以将UIButton拖到UIBarButtonItem上,并且可以根据需要自定义UIButton。

尝试将按钮的框架设置为所需的大小。

Stuart,由于您具有setTitle:@“”导航栏按钮将不会显示文本“ add”,而是占用分配给文本的空间。.我也尚未找到合适的解决方案,但可以解决您的问题问题是将字体大小设置为0.1f。 这样可以解决您的问题。

您需要在AppDelegate.m的“ application:didFinishLaunchingWithOptions”方法中设置导航栏外观,请尝试添加以下代码:

UIImage *buttonback = [[UIImage imageNamed:@"nav_back"]
resizableImageWithCapInsets:UIEdgeInsetsMake(0, 22, 0, 0)];

    [[UIBarButtonItem appearance]
setBackButtonBackgroundImage:buttonback forState:UIControlStateNormal
barMetrics:UIBarMetricsDefault];

    [[UIBarButtonItem appearance] setTitleTextAttributes:[NSDictionary
dictionaryWithObjectsAndKeys:[UIColor whiteColor],
UITextAttributeTextColor, [UIFont fontWithName:@"verdana" size:0.1f],
UITextAttributeFont, nil] forState:UIControlStateNormal];

另请注意,这将与iOS 6一起使用,以寻找iOS 5兼容性的解决方案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM