7

画像に示すように、ナビゲーション バーのカスタム右バー ボタン項目にカスタム ボタンを追加しました。

ボタンの後のスペースを削除して画面の右端に触れるようにしたいのですが、検索しても解決策が見つかりませんでした。誰かがその方法について言及できれば、それは素晴らしいことです。

これは私が使用しているコードです

UIButton *aButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];    
aButton.frame = CGRectMake(50.0, 0.0, 60, 44);
UIBarButtonItem *aBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:aButton];
[aButton addTarget:self action:@selector(testButtonControl:) forControlEvents:UIControlEventTouchUpInside];

self.navigationItem.rightBarButtonItem = aBarButtonItem;

ここに画像の説明を入力

4

4 に答える 4

17

負の幅の固定スペース要素を追加できます (ハックのように聞こえますが、機能します)。

UIButton *aButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];    
aButton.frame = CGRectMake(50.0, 0.0, 60, 44);
UIBarButtonItem *aBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:aButton];
[aButton addTarget:self action:@selector(testButtonControl:) forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *spaceFix = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:NULL];
spaceFix.width = -5;

self.navigationItem.rightBarButtonItems = @[spaceFix, aBarButtonItem];
于 2013-06-05T17:49:31.487 に答える
3

新しいビューを作成し、ボタンと必要なものをすべて追加して、示されているように titleView に追加する必要があります。

- (void)viewDidLoad {
    self.navigationItem.titleView = [self titleView];
}

- (UIView *)titleView {
    CGFloat navBarHeight = self.navigationController.navigationBar.frame.size.height;
    CGFloat width = 0.95 * self.view.frame.size.width;
    UIView *containerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, width, navBarHeight)];
..
// please add what you need here
....
}
于 2012-09-07T11:23:43.407 に答える
0

UINavigationBarカテゴリを介してそのメソッドをサブクラス化またはオーバーライドしない限り、できません。

于 2012-08-05T09:00:04.607 に答える
0

これを行うには、UIView を追加し、その中に x=spaceWidth y = 0 のボタンを追加します。

適切なアイテムの以下のコードを見てください (これは UINavigationItem カテゴリ内にあります)。

1 -

UIView *_rightView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 44, 44)]; [_rightView setBackgroundColor:[UIColor purpleColor]];//debug color

2-

    UIButton *aLeftButton = [[UIButton alloc] init];

   //...//

    aLeftButton.frame = CGRectMake(-15, 0, 44, 44);//in your case +15
    [aLeftButton setBackgroundImage:[UIImage imageNamed:buttonName] forState:UIControlStateNormal];
    [aLeftButton setBackgroundImage:[UIImage imageNamed:[buttonName stringByAppendingString:@"Selected"]] forState:UIControlStateSelected];
    [aLeftButton setAdjustsImageWhenDisabled:NO];
    [aLeftButton setAdjustsImageWhenHighlighted:NO];

    [aLeftButton addTarget:theSender action:aSelector forControlEvents:UIControlEventTouchUpInside];
    [_rightView addSubview:aLeftButton];
    UIBarButtonItem *aBarButton = [[UIBarButtonItem alloc] initWithCustomView:_rightView];
    [leftBarButtonsItem addObject:aBarButton];`

3

self.leftBarButtonItem = leftBarButtonsItem;

于 2013-11-01T14:46:26.513 に答える