2016-12-06 6 views
0

Ich versuche, die Facebook-Schaltfläche hinzuzufügen.AutoLayout funktioniert nicht richtig auf IOS 8.3

Da Sie facebook button nicht aus dem Interface Builder ziehen und ablegen können, müssen Sie dies programmatisch tun.

Ich füge eine Dummy-Schaltfläche ohne Text hinzu und versuche, die Einschränkungen der Facebook-Schaltfläche zuzuordnen. Es funktioniert auf dem 10.1 Simulator, aber wenn ich auf 8.3-Simulator teste, tut es das nicht. Ich frage mich, was ich falsch mache?

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    facebookLoginButton = [[FBSDKLoginButton alloc] init]; 
    [self.view addSubview:facebookLoginButton]; 
} 

-(void)viewDidLayoutSubviews { 
    [super viewDidLayoutSubviews]; 
    facebookLoginButton.frame = dummyButton.frame; 
} 

ios 8.3 zeigt die Facebook-Login-Button am Ursprung des Bildschirms

enter image description here

ios 10.1 zeigt die Facebook-Login-Button genau auf die rechte Taste, die Dummy-Taste Position übereinstimmt.

enter image description here

Antwort

1

Einstellen eines frame des Objekts direkt verwendet Auto-Layout nicht. Das automatische Layout verwendet Integritätsregeln, und das Hinzufügen einer Ansicht wird automatisch dazu führen, dass implizite Integritätsbedingungen hinzugefügt werden, sofern Sie translatesAutoResizingMaskIntoConstraints nicht auf false setzen.

Das automatische Layout überschreibt den Rahmen beim nächsten Neuberechnen des Layouts.

Sie können jedoch die Schaltfläche in Interface Builder direkt hinzufügen; FBSDKLoginButton erbt von FBSDKButton, die von UIButton erbt.

Sie können einfach eine UIButton in Interface Builder hinzufügen und dann die benutzerdefinierte Klasse auf FBSDKLoginButton

setzen
Verwandte Themen