33 Stimmen

Wie kann man Abzeichen zu UIBarbutton-Elementen hinzufügen?

Hallo Freunde, ich bin neu in der iphone Entwicklung. Am Kampf mit Abzeichen Werte auf UIBarbutton Element auf der rechten Seite hinzufügen. Ich habe versucht, aber ich kann dieses Problem nicht lösen. Kann mir jemand helfen.

Vielen Dank im Voraus!

30voto

phyzalis Punkte 1206

Ich weiß, dieser Beitrag ist ziemlich alt, aber mit iOS7, MKNumberBadgeView's Aussehen nicht wirklich mit der Registerkarte Bar Element Abzeichen Design. Ich habe diese andere Komponente gefunden, die UIBarButtonItem erbt und die Arbeit sehr gut machen:

https://github.com/TanguyAladenise/BBBadgeBarButtonItem

Ich hoffe, dies kann anderen iOS7-Entwicklern wie mir helfen

29voto

Yuvaraj.M Punkte 9701

Endlich habe ich den Weg gefunden, um Abzeichen auf UIBarbutton-Elementen hinzuzufügen. Ich habe viel gesucht, aber nicht die richtige Antwort gefunden. Also erstellte ich UIButton und fügte es als benutzerdefinierte Ansicht auf rightbarbutton Element. Fügen Sie die MKNumberBadgeView für die Anzeige der Ausweisnummer. Unten habe ich meinen Code für Sie hinzufügen.

// Initialize NKNumberBadgeView...
MKNumberBadgeView *number = [[MKNumberBadgeView alloc] initWithFrame:CGRectMake(60, 00, 30,20)];
number.value = 10;

// Allocate UIButton
UIButton *btn = [UIButton  buttonWithType:UIButtonTypeCustom];
    btn.frame = CGRectMake(0, 0, 70, 30);
    btn.layer.cornerRadius = 8;
    [btn setTitle:@"Button" forState:UIControlStateNormal];
    [btn addTarget:self action:nil forControlEvents:UIControlEventTouchUpInside];
    //[btn setBackgroundColor:[UIColor blueColor]];
    [btn setBackgroundColor:[UIColor colorWithRed:0.0 green:0.0 blue:0.1 alpha:0.2]];
    btn.font = [UIFont systemFontOfSize:13];
    //[btn setFont:[UIFont systemFontOfSize:13]];
    [btn addSubview:number]; //Add NKNumberBadgeView as a subview on UIButton

// Initialize UIBarbuttonitem...
UIBarButtonItem *proe = [[UIBarButtonItem alloc] initWithCustomView:btn];
self.navigationItem.leftBarButtonItem = proe;

Danke.

21voto

Mike Punkte 1263

Phyzalis hat eine gute Antwort, eine kategorisierte Version seiner Lösung gibt es hier:

UIBarButtonItem+Badge

So können Sie es verwenden:

// Build your regular UIBarButtonItem with Custom View
UIImage *image = [UIImage imageNamed:@"someImage"];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(0,0,image.size.width, image.size.height);
[button addTarget:self action:@selector(buttonPress:) forControlEvents:UIControlEventTouchDown];
[button setBackgroundImage:image forState:UIControlStateNormal];

// Make BarButton Item
UIBarButtonItem *navLeftButton = [[UIBarButtonItem alloc] initWithCustomView:button];
self.navigationItem.leftBarButtonItem = navLeftButton;

// this is the key entry to change the badgeValue
self.navigationItem.leftBarButtonItem.badgeValue = @"1";

12voto

Tod Cunningham Punkte 3645

Ich habe etwas Ähnliches wie MaxMa gemacht, aber ich bin einfach weitergegangen und habe das Abzeichen direkt zur self.navigationController.navigationBar hinzugefügt.

enter image description here

MKNumberBadgeView *numberBadge = [[MKNumberBadgeView alloc] initWithFrame:CGRectMake(35, 0, 40, 40)];
numberBadge.value = 1;

[self.navigationController.navigationBar addSubview:numberBadge];

Stellen Sie einfach sicher, dass Sie es während viewWillDisappear aus der Unteransicht entfernen und während viewDidAppear wieder hinzufügen. Es scheint immer noch ein wenig hacky, aber ich bin bequemer mit diesem Hack dann ändern die Navigationsleiste z-Reihenfolge.

Um sie während viewWillDisappear zu entfernen

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    [numberBadge removeFromSuperview]; 
}

7voto

MaxMa Punkte 71

Das ist einfach und der beste Weg!

enter image description here

MKNumberBadgeView *numberBadge = [[MKNumberBadgeView alloc] initWithFrame:CGRectMake(230, -51, 40, 40)];
numberBadge.value = 5;

self.navigationController.navigationBar.layer.zPosition = -1;
[self.view addSubview:numberBadge];

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X