iphone - UIToolbar 作为 UINavigationbar 中的右键,包含 2 个按钮,它们之间没有间距

标签 iphone objective-c ios ipad

我想让我的右栏按钮包含 2 个按钮。所以我通过使用 UIToolbar 来做到这一点。但问题是这两个按钮彼此分开,而我想要达到的效果是让它们彼此齐平。

这是他们现在的样子

enter image description here

这是迄今为止我用来实现按钮的代码

    UIToolbar *tools = [[UIToolbar alloc] initWithFrame:CGRectMake(0.0f, 2.0f, 120.0f, 40.01f)]; // 44.01 shifts it up 1px for some reason
tools.clearsContextBeforeDrawing = NO;
tools.clipsToBounds = YES;
tools.tintColor = [UIColor blueColor];
tools.barStyle = -1;// -1; // clear background
NSMutableArray *buttons = [[NSMutableArray alloc] initWithCapacity:2];


UIButton * upButton = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
upButton.frame = CGRectMake(0, 07, 46, 30);
upButton.titleLabel.font = [UIFont fontWithName:@"Arial-BoldMT" size:16];
[upButton setTitle:@"" forState:UIControlStateNormal];
upButton.backgroundColor = [UIColor clearColor];
[upButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal ];
[upButton addTarget:self action:@selector(pageDown) forControlEvents:UIControlEventTouchUpInside];
[upButton setBackgroundImage:[UIImage imageNamed:@"page_up.png"] forState:UIControlStateNormal];
[upButton setBackgroundImage:[UIImage imageNamed:@"page_up_action.png"] forState:UIControlStateSelected];
UIBarButtonItem *toggleSegmentedControlBarItemOne = [[UIBarButtonItem alloc] initWithCustomView:upButton];
[buttons addObject:toggleSegmentedControlBarItemOne];

UIButton * downButton = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
downButton.frame = CGRectMake(0, 07, 46, 30);
downButton.titleLabel.font = [UIFont fontWithName:@"Arial-BoldMT" size:16];
[downButton setTitle:@"" forState:UIControlStateNormal];
downButton.backgroundColor = [UIColor clearColor];
[downButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal ];
[downButton addTarget:self action:@selector(pageUp) forControlEvents:UIControlEventTouchUpInside];
[downButton setBackgroundImage:[UIImage imageNamed:@"page_down.png"] forState:UIControlStateNormal];
[downButton setBackgroundImage:[UIImage imageNamed:@"page_down_action.png"] forState:UIControlStateSelected];
UIBarButtonItem *toggleSegmentedControlBarItemTwo = [[UIBarButtonItem alloc] initWithCustomView:downButton];
[buttons addObject:toggleSegmentedControlBarItemTwo];

[tools setItems:buttons animated:NO];

[buttons release];
UIBarButtonItem *twoButtons = [[UIBarButtonItem alloc] initWithCustomView:tools];
[tools release];
self.navigationItem.rightBarButtonItem = twoButtons;
[twoButtons release];

有人可以告诉我如何让这两个按钮没有间隙地坐在一起吗?

非常感谢, -代码

最佳答案

您可以将 UISegmentedControl 作为 customView 添加到您的 navigationItem 并将其瞬时属性设置为 true,这样您将获得您想要的结果。

这里是示例代码

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    self.title = @"Test";

    UISegmentedControl *segControl = [[UISegmentedControl alloc] initWithFrame:CGRectMake(0, 0, 90, 30)];
    segControl.momentary = YES;
    segControl.segmentedControlStyle = UISegmentedControlStyleBar;
    segControl.tintColor = [UIColor darkGrayColor];

    [segControl insertSegmentWithImage:[UIImage imageNamed:@"up.png"] atIndex:0 animated:NO];
    [segControl insertSegmentWithImage:[UIImage imageNamed:@"down.png"] atIndex:1 animated:NO];

    [segControl addTarget:self action:@selector(segButtonDown:) forControlEvents:UIControlEventValueChanged];

    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:segControl];

}

- (void)segButtonDown:(id)sender {

    UISegmentedControl *segControl = (UISegmentedControl *)sender;

    switch (segControl.selectedSegmentIndex) {
        case 0:
            NSLog(@"Up");
            break;
        case 1:
            NSLog(@"Down");
        default:
            break;
    }

}

这是它的样子。

Screenshot

在这里您可以在控制台中看到事件。

2012-11-25 16:03:47.805 test2[13886:c07] Up
2012-11-25 16:03:48.367 test2[13886:c07] Down
2012-11-25 16:03:48.930 test2[13886:c07] Up
2012-11-25 16:03:49.538 test2[13886:c07] Down

关于iphone - UIToolbar 作为 UINavigationbar 中的右键,包含 2 个按钮,它们之间没有间距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13551393/

相关文章:

iphone - 在 Xcode 中删除/移除组

iphone - 从 iPod 库获取播放列表 - Objective C

iOS 6 bluetoothmanager 配对专用 api

带有CAGradientLayer的iPhone iOS自定义UIButton,如何使其指示触摸?

ios - popoverContentSize 在 iOS 8 中没有响应

ios - 处理多种语言的 UITextField

ios - 动态更新约束不起作用

ios - 文件 viewController.swift 是模块 "coreData"的一部分,忽略导入

javascript - 我们如何使用Javascript单击addeventlistener在Titanium Developer中获取createImageView的图像路径或URL?

iphone - 添加单元格后,iOS UITableView 不滚动