2016-12-06 10 views
0

facebookボタンを追加しようとしています。ios 8.3でAutoLayoutが正しく機能しない

インタフェースビルダーからfacebookボタンをドラッグアンドドロップできないため、プログラマチックに行う必要があります。

テキストなしのダミーボタンを追加し、その制約をfacebookボタンに割り当てようとします。それは10.1シミュレータで動作しますが、私が8.3シミュレータでテストするときにはそうではありません。私は何が間違っているのだろうか?

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

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

IOS 8.3は、画面の起源

enter image description here

IOS 10.1でのFacebookのログインボタンが正確にダミーのボタンの位置と一致して右ボタンでFacebookのログインボタンをそれぞれ示します。オブジェクトのframeを直接使用していない自動レイアウトを設定する

enter image description here

答えて

1

。自動レイアウトでは制約が使用され、プログラムでビューを追加すると、translatesAutoResizingMaskIntoConstraintsfalseに設定しない限り、暗黙の制約が追加されます。

自動レイアウトは、次回レイアウトを再計算するときにフレームを上書きします。

ただし、Interface Builderでボタンを簡単に追加できます。 FBSDKLoginButtonは、UIButtonから継承するFBSDKButtonを継承しています。

インターフェイスビルダでUIButtonを追加し、カスタムクラスをFBSDKLoginButton

に設定するだけです
関連する問題