我正在尝试添加facebook按钮。
由于您无法从界面构建器拖放Facebook按钮,因此需要以编程方式执行。
我添加了一个没有文字的虚拟按钮,并尝试将其约束分配给facebook按钮。
FBSDKLoginButton *loginButton = [[FBSDKLoginButton alloc] init];
loginButton.frame = dummyButton.frame; // try to assign frame values to the facebook button
[self.view addSubview:loginButton];
下图显示了虚拟按钮约束。
但似乎它根据我所看到的情况不起作用。
答案 0 :(得分:2)
Autolayout是two step process,
在视图出现之前,这两步过程可能会多次发生,因此,viewDidLoad或viewWillAppear中的帧不能保证是预期的帧。
因此,更新框架的最佳位置是视图显示其子视图。
因此这一行,
loginButton.frame = dummyButton.frame
不保证预期的帧。
要确保始终拥有最新的更新框架,您可以更新框架
viewDidLayoutSubviews
或layoutSubviews
- (void)viewDidLoad
{
[super viewDidLoad];
facebookLoginButton = [[FBSDKLoginButton alloc] init];
[self.view addSubview:facebookLoginButton];
}
-(void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
facebookLoginButton.frame = dummyButton.frame;
}
或
您可以使用虚拟视图而不是按钮,并添加Facebook按钮以填充虚拟视图。