2016-12-22 10 views
0

Ich möchte UI machen, wie folgt,UINavigation mit UITextField als Subview

enter image description here

Ich habe versucht, die Höhe von UINavigationController wie

[self.navigationController.navigationBar setFrame:CGRectMake(0, 0, 320, 110)]; 

aber die Navigation Titel und BarButtonItem erscheint nach unten zu erhöhen. ich kann ausblenden Navigation nicht hinzufügen, wie ich Seitenmenü von Drittanbietern verwenden, die Left BarButtonItem verwendet.

ich sehr gut kann Navigation halten, wie es ist und unten ich habe als Subview mit dem gleichen Hintergrundfarbe wie der Navigation hinzugefügt uiview aber es ist feine Linie erscheint zwischen ... :(

Antwort

3

Sie können die Höhe der UINavigationBar nicht erhöhen. Fügen Sie eine UIView mit diesen Elementen direkt unter der UINavigationBar hinzu.

Dann wird es zusätzliche Zeile unter UINavigationBar geben. Sie können diese Zeile entfernen.Siehe How to hide iOS7 UINavigationBar 1px bottom line

oder aber diesen Code verwenden (ich habe es gerade aus diesem Link in schnellen kopiert, wandelt es in Objective-C)

import UIKit 

class ViewController: UIViewController { 

    private var shadowImageView: UIImageView? 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    override func viewWillAppear(_ animated: Bool) { 
     super.viewWillAppear(animated) 

     if shadowImageView == nil { 
      shadowImageView = findShadowImage(under: navigationController!.navigationBar) 
     } 
     shadowImageView?.isHidden = true 
    } 

    override func viewWillDisappear(_ animated: Bool) { 
     super.viewWillDisappear(animated) 

     shadowImageView?.isHidden = false 
    } 

    private func findShadowImage(under view: UIView) -> UIImageView? { 
     if view is UIImageView && view.bounds.size.height <= 1 { 
      return (view as! UIImageView) 
     } 

     for subview in view.subviews { 
      if let imageView = findShadowImage(under: subview) { 
       return imageView 
      } 
     } 
     return nil 
    } 
} 

Dies ist das Ergebnis

enter image description here

0

Eigentlich kippen Sie ändern Höhe von UINavigationBar. Ihre Ansicht tatsächliche Viewcontroller der von 64 Pixel von TopLayoutGuide (Vertical Raum) Statusleiste Höhe ist 20 Pixel 44 Navigationsleiste Höhe Pixel startet

ist also solche UI-Design, machen Sie einfach diese Schritte

  1. ausblenden NavigationBar auf dieser Ansicht Controller wie

    self.navigationController.navigationBarHidden = YES;
    self.navigationItem.hidesBackButton = YES;

  2. Fügen Sie dann Ansicht vom Storyboard mit vertical space als 0 von TopLayoutGuide hinzu. Und entwerfen Sie es entsprechend Ihrer Anforderung. So können Sie einfach diesen Look geben und damit umgehen IBOutlets und IBActions für jedes Element mit

Sie können auch UILable hinzufügen Titel Bildschirm zu zeigen.

+0

i kann nicht ausblenden Navigation hinzufügen, da ich Seitenmenü von Drittanbietern benutze, das Left BarButtonItem verwendet. – user2813740

0

Sie können die Größe der UINavigationBar nicht erhöhen. Das hat die Standardgröße 44 (Nav Height) + 20 (Größe der Statusleiste). Hier haben Sie zwei Möglichkeiten zu erreichen.

Zunächst durch Hinzufügen von Menü, Dashboard Titel Label & Benachrichtigungssymbol auf die UINavigationBar. Fügen Sie Jobs, Bedingungen und Interviews als separate Ansicht unten zur Navigationsleiste hinzu.

Zweitens durch Anpassen der gesamten Ansicht, wie von @Pushkraj erwähnt, d. H. Durch Ausblenden der aktuellen Navigationsleiste und Hinzufügen Ihrer eigenen Ansicht, die alle UI-Elemente enthält.

Verwandte Themen