2016-12-06 3 views
0

Я пытаюсь добавить кнопку facebook.AutoLayout не работает должным образом на ios 8.3

Поскольку вы не можете перетаскивать кнопку 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 показывает кнопку входа facebook в начале экрана

enter image description here

ИОС 10.1 показывает кнопку facebook входа в систему именно на правую кнопку, которая соответствует фиктивный положение кнопки.

enter image description here

ответ

1

Установка frame напрямую не используется автоматическое расположение объекта. Автоматическая компоновка использует ограничения, а добавление представления программно приведет к добавлению неявных ограничений, если вы не установили translatesAutoResizingMaskIntoConstraints в false.

Автоматический макет будет переопределять рамку при последующем пересчете макета.

Однако вы можете легко добавить кнопку в Interface Builder напрямую; FBSDKLoginButton наследует от FBSDKButton, который наследует от UIButton.

Вы можете просто добавить UIButton в Interface Builder, а затем установить свой собственный класс в FBSDKLoginButton

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