AutoLayout在ios 8.3上无法正常运行

时间:2016-12-06 21:37:44

标签: ios objective-c facebook autolayout

我正在尝试添加facebook按钮。

由于您无法从界面构建器拖放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

ios 10.1在右侧按钮上显示Facebook登录按钮,该按钮与虚拟按钮位置匹配。

enter image description here

1 个答案:

答案 0 :(得分:1)

直接设置对象frame并不是使用自动布局。自动布局使用约束,以编程方式添加视图将导致添加隐式约束,除非您将translatesAutoResizingMaskIntoConstraints设置为false

自动布局将在下次重新计算布局时覆盖框架。

但是,您可以直接在Interface Builder中轻松添加按钮; FBSDKLoginButton继承自FBSDKButton继承的UIButton

您只需在Interface Builder中添加UIButton,然后将其自定义类设置为FBSDKLoginButton