Sie eine UIButton
als customView
eines UIBarButtonItem
und andere Hintergrundbilder haben zwei verwenden können a normal
und selected
Zustand des UIButton. Wenn Sie dann auf die Schaltfläche tippen, können Sie den selected
-Status einfach auf YES
oder NO
setzen.
// Build right bar button
UIImage *normalButtonImage = [UIImage imageNamed:@"normal-button"];
UIImage *selectedButtonImage = [UIImage imageNamed:@"selected-button"];
CGRect rightButtonFrame = CGRectMake(0, 0, normalButtonImage.size.width,
normalButtonImage.size.height);
UIButton *rightButton = [[UIButton alloc] initWithFrame:rightButtonFrame];
[rightButton setBackgroundImage:normalButtonImage forState:UIControlStateNormal];
[rightButton setBackgroundImage:selectedButtonImage forState:UIControlStateSelected];
[rightButton addTarget:self action:@selector(rightBarButtonPress)
forControlEvents:UIControlEventTouchDown];
[orientationButton setShowsTouchWhenHighlighted:YES];
[orientationButton setSelected:NO];
UIBarButtonItem *rightBarButton = [[UIBarButtonItem alloc] initWithCustomView:rightButton];
[self.navigationItem setRightBarButtonItem:rightBarButton];
dann Ihre Methode zum, wenn die Schaltfläche geklickt wird, die
- (void)rightBarButtonPress
{
//toggle selected state of button
UIBarButtonItem *rightBarButton = self.navigationItem.rightBarButtonItem;
UIButton *button = (UIButton *)rightBarButton.customView;
[button setSelected:!button.selected];
//do whatever else you gotta do
}
Ich frage mich auch, ob es eine Möglichkeit gibt, dies zu tun. Benutzerdefinierte Ansicht mit UIButton ist die nächstgelegene Lösung, die ich kenne, aber es kann nicht mit verschiedenen bar Metriken. –
das ist richtig. Ich komme nie über jede mögliche Lösung für dieses gewünschte Verhalten. –