Próbuję utworzyć UIView (A) zawierający 2 niestandardowe widoki (b) w nimDodawanie podklasy UIView do stalówka z jego ograniczeniami auto układ
View B jest ustawiony za pomocą wiązań autoLayout i wykonane w konstruktorze Interface , w tym ograniczenia. A dodano do końcówki piszącej viewController
B - UIImageView (Główny = 10, ciągnąc = 10 AlignVertically) - UITextField (Główny = 10, ciągnąc = 10 AlignVertically)
ViewController A (300x300, AlignHorizontally, AlignVertically)
W ViewController mam być ustalona na 300x300 i B1 i B2 ma początku, na końcu, górny i dolny przypięte na 0. (która powinna uczynić B1 i B2 być 300x150, wybacz mi, jeśli coś przegapię)
Wkładając Zobacz BI użyć następującego kodu, aby załadować swój stalówka:
override func awakeAfterUsingCoder(aDecoder: NSCoder!) -> AnyObject! {
if self.subviews.count == 0 {
let bundle = NSBundle(forClass: self.dynamicType)
var view = bundle.loadNibNamed("B", owner: nil, options: nil)[0] as B
view.setTranslatesAutoresizingMaskIntoConstraints(false)
let constraints = self.constraints()
self.removeConstraints(constraints)
view.addConstraints(constraints)
return view
}
return self
}
Ale gdy próbuję uruchomić to pojawia się następujące ostrzeżenie w tym wypadku:
The view hierarchy is not prepared for the constraint: <NSLayoutConstraint:0x7f897ad1acc0 V:[TestProject.B:0x7f897af73840(300)]>
When added to a view, the constraint's items must be descendants of that view (or the view itself). This will crash if the constraint needs to be resolved before the view hierarchy is assembled. Break on -[UIView _viewHierarchyUnpreparedForConstraint:] to debug.
Próbowałem również dodawanie widok jako własność View B i użyć następującego kodu, aby go dodać do B
NSBundle.mainBundle().loadNibNamed("B", owner: self, options: nil)
self.addSubview(self.viewOfB);
wynikiem jest to widok jest dodawany do viewController, ale nie jest przyjęcie dowolnej z opcji AutoLayoutConstraints z własnej końcówki.
W tej chwili nie mam pojęcia, jak dodać ten widok do widoku viewController, w tym ograniczenia. Co ja robię źle? Czy jest lepszy sposób to zrobić?
PS: Widok A był również niestandardowy.
PPS: Używam Swift, aby to zrobić, ale jestem pewien, że rozwiązania w Objective-C działają również.
spojrzeć na tym kursie powinny być pomocne w celu wykorzystania programowo stworzony ograniczenie w swift http://makeapppie.com/2014/07/26/the-swift-swift-tutorial-how-to-use-uiviews- with-auto-layout-programme/ – Signo