导航栏上的自定义UIBarButtonItem图像偏移

时间:2013-11-22 15:04:20

标签: ios uinavigationcontroller uinavigationbar uibarbuttonitem

我想在我的应用中使用自己的图像作为动作按钮。我的图像尺寸为30px X 30px。在我的应用程序中,我使用代码:

UIBarButtonItem *heart = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"action@2x.png"] style:UIBarButtonItemStyleDone target:self action:@selector(theactionbutton)];
self.navigationItem.rightBarButtonItem = the action;

然而,按钮似乎离左边太远了。我已经附加了两个图像,第一个显示原始操作按钮,第二个显示我的自定义图像,用于比较。有什么想法,为什么它被移到左边?

enter image description here enter image description here

2 个答案:

答案 0 :(得分:0)

您可以使用按钮图像插图,例如

barButtonItem.imageInsets = .init(top: 0, left: 10, bottom: 0, right: 10)

答案 1 :(得分:-1)

  1. 创建图片

    UIImage *image = [UIImage imageNamed:@"image"];

  2. 创建按钮并设置背景图像和目标操作。

  3. UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; button.frame= CGRectMake(0.0, 0.0, image.size.width, image.size.height); [button setBackgroundImage:image forState:UIControlStateNormal]; [button addTarget:self action:@selector(theactionbutton) forControlEvents:UIControlEventTouchUpInside];

    1. 创建UIView并添加按钮作为子视图

      UIView *view =[[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, image.size.width, image.size.height) ]; [view addSubview:button];

    2. 使用自定义视图创建条形按钮项目,并将其设置为导航栏右侧项目

      UIBarButtonItem *actionButton = [[UIBarButtonItem alloc] initWithCustomView:view]; self.navigationItem.rightBarButtonItem = actionButton;

    3. 注意: @ 2x图像应该是双倍大小。如果你的iamgeView是30x30,那么你的Image应该是60X60。如果您有30x30图像并且名称为@ 2x,则它将被用作15x15,因此,使您的图像为双倍大小或使用它而不使用@ 2x