Wie bekomme ich eine full-size-UINavigationBar titleView
Ich versuche, ein benutzerdefiniertes Steuerelement hinzufügen, wie die titleView in eine UINavigationBar. Wenn ich also trotz der Einstellung des Rahmens und die Eigenschaften, die normalerweise übernehmen die volle Breite, bekomme ich diese:
Dem hellen blau kann ignoriert werden, da es ist, wo ich bin versteckt meine custom control. Das Problem ist der schmale Streifen der navbar an den enden der bar. Wie kann ich loswerden dieser also mein customview wird die Strecke 100%?
CGRect frame = CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y, self.view.width, kDefaultBarHeight);
UANavBarControlView *control = [[[UANavBarControlView alloc] initWithFrame:frame] autorelease];
control.autoresizingMask = UIViewAutoresizingFlexibleWidth;
self.navigationItem.titleView = control;
PS - ich weiß, ich kann fügen Sie die Ansicht, indem Sie sich, anstatt zu hängen, um eine Navigationsleiste, und es wäre sehr einfach, positionieren Sie es mir. Ich habe meine Gründe für das Bedürfnis nach es zu sein, "auf" der Navigationsleiste, und diese Gründe sind hier
InformationsquelleAutor der Frage coneybeare | 2010-09-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einstellung der titleView Ihrer Ansicht navigationItem nie den trick tun. Stattdessen können Sie hinzufügen, eine Untersicht der navigation-controller ist navigationBar :
InformationsquelleAutor der Antwort VdesmedT
Gerade lief in das gleiche problem und nach ein bisschen nachdenken gelöst. titleView Rahmen wird gesetzt durch die navigationBar jedes mal, wenn es erscheint.
Alles, was Sie tun müssen, ist UIView-Unterklasse und überschreiben
setFrame
.Wie diese:
Nun Ihre hinterhältigen neue UIView als
navigationItem.titleView
und genießen Sie Ihre neu gewonnene Widerstand, um eine Größenänderung durch den superview.Sie nicht haben, um set super frame jedes mal, wenn der Rahmen festgelegt wird. Sie können einfach legen Sie es einmal und fertig. Wenn Sie möchten, unterstützt die Orientierung ändert, könnte man wahrscheinlich zu hacken, zusammen, zu.
InformationsquelleAutor der Antwort ksm
Den folgenden code formuliert, die auf iOS8/iOS9/iOS10/iOS11.
Code in swift 3
InformationsquelleAutor der Antwort xu tong
Swift version von ksm Antwort
InformationsquelleAutor der Antwort Marlo Quidato
Dank
@VdesmedT
für die Antworten , ich habe mit dieser Antwort zu erreichen, eine volle Bildschirmgröße titleView in der navigationbar .Aber, ich habe nur ein Upgrade auf iOS11 vor kurzem und ich fand, dass diese Lösung nicht funktioniert. Und so habe ich es von einer anderen Art(mag seltsam). Der Kern der Idee ist nicht zu ändern, die titleView die Größe, sondern die Untersichten der bar zu erreichen die Vollbild-bar betrifft
ist das system Polsterung gesetzt, um zu titleView, können Sie mithilfe der manuellen layout
oder autolayout die Einschränkung, dies zu erreichen). und dann legen Sie es als
navigation bar titleView
von -12 bis die barView Breite + 12
überlasten Ihre barView ist pointInside , um es respondable auch
wenn der klicken Sie geschah außerhalb der barView.
InformationsquelleAutor der Antwort ximmyxiao
CGRect frame = CGRectMake(0, 0, 320, 44);
wenn Sie möchten, um Bild-dann nehmen Sie uiimage Blick stattdessen auf uilable können Sie erstellen, jeden Blick voll Navigationsleiste Sag mir, wie ur die navigation Aussehen schicke ich dir code für Sie, wenn Sie wollen, kann ich setzen 6 Taste zur navigation auch
InformationsquelleAutor der Antwort GhostRider