代码之家  ›  专栏  ›  技术社区  ›  casillas

自动布局在ios 8.3上无法正常工作

  •  0
  • casillas  · 技术社区  · 9 年前

    我正在尝试添加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 回复  |  直到 9 年前
        1
  •  1
  •   Paulw11    9 年前

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

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

    但是,您可以轻松地直接在界面生成器中添加按钮; FBSDKLoginButton 继承自 FBSDKButton 继承自 UIButton .

    您只需在界面生成器中添加一个UIButton,然后将其自定义类设置为 FBSDKLoginButton