2015-07-13 2 views
0

Я создал навигационную панель для своего приложения, которую я бы хотел использовать повторно на всех своих экранах.iOS - Пользовательский вид, не заполняющий супервизор

Проблема в том, что она не заполняет назначенное пространство. Итак, как я могу установить, что пользовательский вид навигационной панели должен иметь ту же ширину и высоту, что и назначенный супервизор?

Мои NavigationBarView.swift:

import UIKit 

class NavigationBarView: UIView { 

    @IBOutlet var view: UIView! 

    required init(coder aDecoder: NSCoder){ 
     super.init(coder: aDecoder) 

     NSBundle.mainBundle().loadNibNamed("NavigationBarView", owner: self, options: nil) 
     self.addSubview(self.view) 
    } 
} 

который загружает мой NavigationBarView.xib.

А потом на моей Main.storyboard я создал новое представление и задал класс для представления «NavigationBarView». Но теперь он заполняет только половину назначенного пространства.

Как я могу получить его, чтобы заполнить все пространство?

+0

Назначить значение NSBundle.mainBundle(). LoadNibNamed ("NavigationBarView", владелец: self, options: nil) для переменной. – Amit89

+0

Вы использовали ограничения, чтобы заполнить пробел? – abinop

+0

Я установил ограничения для правильного выравнивания супервизора. Я не знаю, где установить ограничения, чтобы заполнить пробел? – Whooper

ответ

0

вы должны дать экрана вспышки кулаком, если он не работает, а затем вызвать метод ниже

override func viewDidLayoutSubviews() { 
    super.viewDidLayoutSubviews() 
    // set your custom view frame here 
} 
+0

Извините, но я не думаю, что понимаю. Как настроить пользовательский кадр представления? – Whooper

+0

navigationBar.farme = self.navigationController? .navigationBar.frame –

+0

, если вы используете автоматическую компоновку, тогда установите верхнюю и конечную ведущие ограничения " –

0

Найдено решение здесь: https://gist.github.com/bwhiteley/049e4bede49e71a6d2e2

class CustomView : UIView { 
@IBOutlet weak private var contentView:UIView! 
// other outlets 

override init(frame: CGRect) { // for using CustomView in code 
    super.init(frame: frame) 
    self.commonInit() 
} 

required init(coder aDecoder: NSCoder) { // for using CustomView in IB 
    super.init(coder: aDecoder) 
    self.commonInit() 
} 

private func commonInit() { 
    NSBundle.mainBundle().loadNibNamed("CustomView", owner: self, options: nil) 
    contentView.frame = self.bounds 
    contentView.autoresizingMask = .FlexibleHeight | .FlexibleWidth 
    self.addSubview(contentView) 
} 
} 

Он работает как шарм. :-)

Смежные вопросы