Sto cercando di aggiungere dei vincoli a un pulsante di accesso a Facebook sdk.aggiungere i vincoli al livello di programmazione
Ho il pulsante all'interno di una vista di scorrimento e sto tentando di aggiungere un vincolo superiore a un'etichetta che si trova anche nella vista di scorrimento. Sono in grado di aggiungere con successo il vincolo di altezza senza errori di run time ma il vincolo effettivo non sembra essere applicato al pulsante.
@IBOutlet weak var orLbl: UILabel!
@IBOutlet weak var scrollView: UIScrollView!
override func viewDidLoad() {
super.viewDidLoad()
var loginFBButton = FBSDKLoginButton()
loginFBButton.readPermissions = ["public_profile", "email"]
let heightConstraint = NSLayoutConstraint(
item: loginFBButton,
attribute: NSLayoutAttribute.Height,
relatedBy: NSLayoutRelation.Equal,
toItem: nil,
attribute: NSLayoutAttribute.NotAnAttribute,
multiplier: 1,
constant: 41)
let topConstraint = NSLayoutConstraint(
item: loginFBButton,
attribute: NSLayoutAttribute.TopMargin,
relatedBy: NSLayoutRelation.Equal,
toItem: self.orLbl,
attribute: NSLayoutAttribute.BottomMargin,
multiplier: 1,
constant: 31)
let leadingConstraint = NSLayoutConstraint(
item: loginFBButton,
attribute: NSLayoutAttribute.Leading,
relatedBy: NSLayoutRelation.Equal,
toItem: self.registerButton,
attribute: NSLayoutAttribute.Left,
multiplier: 1,
constant: 0)
let trailingConstraint = NSLayoutConstraint(
item: loginFBButton,
attribute: NSLayoutAttribute.Leading,
relatedBy: NSLayoutRelation.Equal,
toItem: self.registerButton,
attribute: NSLayoutAttribute.Right,
multiplier: 1,
constant: 0)
self.scrollView.addSubview(loginFBButton)
//loginFBButton.center = self.scrollView.center
loginFBButton.addConstraints([heightConstraint, topConstraint])
}
Poi, quando ho includono l'aggiunta del vincolo top, sto ottenendo un errore di runtime:
Quando aggiunta ad una vista, gli elementi del vincolo devono essere discendenti di quella vista (o la vista stessa) . Questo si bloccherà se il vincolo deve essere risolto prima dell'assemblaggio della gerarchia della vista.
Terminare l'applicazione a causa dell'eccezione non rilevata 'NSGenericException', motivo: 'Impossibile installare il vincolo sulla vista. Il vincolo fa riferimento a qualcosa al di fuori del sottostruttura della vista? Questo è illegale.
Sia l'etichetta che il pulsante di Facebook sono nella mia vista di scorrimento? Ho anche stampato o Lbl.superview e loginFBButton.superview e sto ottenendo uiscrollview opzionale per entrambi
Hai provato a capire, quale dei due vincoli provoca l'eccezione? – freytag
@freytag si come menzionato nella domanda, è stato quando ho aggiunto il vincolo principale, stava succedendo l'incidente. Un altro utente ha suggerito di aggiungere i vincoli alla scrollview invece del loginFBButton. L'ho fatto e non ho avuto errori di runtime ma poi il mio pulsante facebook è in alto a sinistra dello schermo e l'etichetta o è completamente fuori dallo schermo – user2363025