Ich möchte ein kleines Symbol neben dem Titel in meinem UINavigationController zeigen.Hinzufügen eines Bildes mit einem Titel in einem UINavigationController
Durch die Magie von Photoshop, wie folgt aus:
Ich weiß, ich brauche eine neue Ansicht zu erstellen und das Bild und Titel hinein zu bauen. Hier ist, was ich tue:
In viewDidLoad in der UINavigationController-View-Controller, ich rufe die Methode
[self setTitleBar];
Welche diese Methode aufruft:
- (void) setTitleBar {
CGRect navBarFrame = self.navigationController.navigationBar.frame;
//UIView *titleView = [[UIView alloc] initWithFrame:CGRectMake(navBarFrame.origin.x, navBarFrame.origin.y, (leftButtonFrame.origin.x + leftButtonFrame.size.width) - rightButtonFrame.origin.x, navBarFrame.size.height)];
UIView *titleView = [[UIView alloc] initWithFrame:CGRectMake(navBarFrame.origin.x, navBarFrame.origin.y,self.view.frame.size.width,navBarFrame.size.height)];
titleView.backgroundColor = [UIColor clearColor];
CGPoint tvCenter = CGPointMake(titleView.frame.size.width/2, titleView.frame.size.height/2);
UIImage * icon = [UIImage imageNamed:@"star"];
UIImageView *iconView = [[UIImageView alloc] initWithImage:icon];
iconView.frame = CGRectMake(0, 0, icon.size.width, icon.size.height);
UILabel *title = [[UILabel alloc] init];
title.backgroundColor = [UIColor clearColor];
title.textColor = [UIColor whiteColor];
title.textAlignment = NSTextAlignmentCenter;
title.text = @"SOME TITLE";
title.frame = CGRectMake(0, 0, 100, titleView.frame.size.height);
[title sizeToFit];
iconView.center = CGPointMake(tvCenter.x - (icon.size.width/2), tvCenter.y);
[titleView addSubview:iconView];
[titleView addSubview:title];
self.navigationItem.titleView = titleView;
}
Meine Logik in der Titleview ist : Holen Sie sich den Rahmen der linken Taste und wählen Sie den rechten Rahmen. Dann machen Sie etwas Mathematik, um herauszufinden, wie groß die Aussicht sein kann. Das sollte die Rahmengröße von titleView sein.
Allerdings kann ich nicht scheinen, es zur Arbeit zu bringen. Wenn ich eine Rahmengröße von 0,0,100,40 einstecke; dann zeigt es den Rahmen aber alles ist zusammengequetscht. Aber du siehst es. Ich weiß, dass 100 dynamisch sein sollte, um sicherzustellen, dass der Titel angezeigt wird.
Aber ich kann nicht scheinen, es herauszufinden.
Irgendwelche Hilfe?
Verwenden Sie 'sizeToFit'. Hier ist die Dokumentation https://developer.apple.com/reference/uikit/uiview/1622630-sizetofit?language=objc. –
Passt die Navigationsleiste Ihre Ansicht automatisch an? Wenn ja, sollten Sie dies in einem XIB machen, damit Sie leicht sehen können, wie es aussieht, wenn es in der Größe geändert wird. –