Ios 在堆栈视图的子视图中显示按钮

Ios 在堆栈视图的子视图中显示按钮,ios,swift,facebook,uiview,Ios,Swift,Facebook,Uiview,我试图在UIView中显示facebook登录按钮,但遇到了一些问题。我有一个UIView当前在stackview中,我认为这会导致一些问题 此屏幕截图显示了我试图将按钮添加到的UIView: 这就是FB按钮显示的位置: 所以我有两个问题。我希望FB登录按钮完全适合UIView的大小,并且位于相同的位置 我有以下代码: 重写func viewDidLoad(){ super.viewDidLoad() } 通过阅读文档,我发现边界是用来获取屏幕上某个位置的点。我尝试将UIView的边界从st

我试图在UIView中显示facebook登录按钮,但遇到了一些问题。我有一个UIView当前在stackview中,我认为这会导致一些问题

此屏幕截图显示了我试图将按钮添加到的UIView:

这就是FB按钮显示的位置:

所以我有两个问题。我希望FB登录按钮完全适合UIView的大小,并且位于相同的位置

我有以下代码:

重写func viewDidLoad(){ super.viewDidLoad()

}

通过阅读文档,我发现边界是用来获取屏幕上某个位置的点。我尝试将UIView的边界从stackView转换为父视图,然后给按钮提供与UIView相同的帧

这显然不起作用,所以一些帮助会有所帮助。如果你能解释为什么会出现这样的问题,这将有助于我在未来解决这样的问题

编辑:多亏@pierce的评论,我将fbLoginButton作为fbLoginView的子视图添加到fbLoginView中,使它看起来更好一些

在这里我仍然有一个问题,框架的大小不等于UIView

我还更新了上面的代码片段以反映这一点。我尝试过调整尺寸,但遇到了一些问题


当我将rect width/height设置为使用fbLoginView width和height时,登录按钮太大了,即使使用clipsToBounds也太大了。当我尝试将按钮居中时,它消失了

是否要将登录按钮添加到loginStackView?是的,我希望它位于loginStackView@PierceWell内的fbLobingView视图中。一个问题是,您正在将该按钮添加到
UIViewController
的主视图中,因此在设置帧时,将其设置为相对于整个屏幕的帧。尝试最后一行作为
loginStackView.addSubview(fbLoginButton)
,或者代替
loginStackView
,尝试您希望容纳实际按钮的容器视图的名称。抱歉,我没有完全阅读您的评论。如果希望它成为fbLoginView的子视图,请说
fbLoginView.addSubview(fbLoginButton)
let fbLoginButton = FBSDKLoginButton()

let convertToSuperView = loginStackView.convert(fbLoginButton.frame, to: self.view)
fbLoginButton.frame = CGRect(x: fbLoginView.bounds.origin.x, y: fbLoginView.bounds.origin.y, width: convertToSuperView.width, height: convertToSuperView.height)
fbLoginButton.clipsToBounds = true
fbLoginView.addSubview(fbLoginButton)