自定义类型右侧栏按钮项

时间:2015-06-27 15:34:30

标签: ios objective-c

我在导航栏中添加了四个右键栏项目。

UIButton *replybutton =  [UIButton buttonWithType:UIButtonTypeCustom];
    [replybutton setImage:[UIImage imageNamed:@"reply.png"] forState:UIControlStateNormal];
    [replybutton addTarget:self action:@selector(replyAction:)forControlEvents:UIControlEventTouchUpInside];
    [replybutton setFrame:CGRectMake(0, 0, 30, 28)];
    UIBarButtonItem *replyBarButton = [[UIBarButtonItem alloc] initWithCustomView:replybutton];
// there are 3 more buttons like this..

 self.navigationItem.rightBarButtonItems = [[NSArray alloc] initWithObjects:replyBarButton, replyAllBarButton, forwardBarButton, deleteBarButton, nil];

我想在这四个条形按钮自定义类型项之间添加一些额外的间距。我试过imageInsets,

replyBarButton.imageInsets = UIEdgeInsetsMake(0.0, 40.0, 0.0, 0.0);

但它没有给出间距。有人可以告诉我,我如何在四个右栏自定义类型按钮项之间给出额外的间距?

1 个答案:

答案 0 :(得分:2)

您可以使用UIBarButtonSystemItemFlexibleSpaceUIBarButtonSystemItemFixedSpace

以下是一个例子:

UIButton *button1 = [UIButton buttonWithType:UIButtonTypeCustom];
[button1 setImage:[UIImage imageNamed:@"icon.png"] forState:UIControlStateNormal];
[button1 addTarget:self action:@selector(replyAction:) forControlEvents:UIControlEventTouchUpInside];
[button1 setFrame:CGRectMake(0, 0, 30, 28)];

// other buttons are created the same way

UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithCustomView:button1];
UIBarButtonItem *item2 = [[UIBarButtonItem alloc] initWithCustomView:button2];
UIBarButtonItem *item3 = [[UIBarButtonItem alloc] initWithCustomView:button3];
UIBarButtonItem *item4 = [[UIBarButtonItem alloc] initWithCustomView:button4];

UIBarButtonItem *space1 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
UIBarButtonItem *space2 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
UIBarButtonItem *space3 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];

self.navigationItem.rightBarButtonItems = @[item1, space1, item2, space2, item3, space3, item4];

在此示例中,您将在每个项目之间添加灵活空格。这将自动均匀地放置您的物品。

如果需要,您还可以定义空间:

UIBarButtonItem *fixedSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
fixedSpace.width = 40.0 // adjust this