Ios 以编程方式将按钮约束到选项卡栏的底部中心

Ios 以编程方式将按钮约束到选项卡栏的底部中心,ios,swift,xcode,Ios,Swift,Xcode,我正在构建一个带有突出的中间按钮的选项卡栏,用于添加帖子。我遇到的问题是,我的按钮很适合iPhone 11 Pro Max,但在其他尺寸的iPhone上定位不正确(见图) 我认为问题在于我设置的是Y位置,而不是相对于tabBar。我对如何做感到困惑,因为我是以编程方式添加按钮,而不是通过故事板(我知道如何使用相对约束)。这里是我设置位置的地方: override func viewDidLayoutSubviews() { button.frame = CGRect.init(x: s

我正在构建一个带有突出的中间按钮的选项卡栏,用于添加帖子。我遇到的问题是,我的按钮很适合iPhone 11 Pro Max,但在其他尺寸的iPhone上定位不正确(见图)

我认为问题在于我设置的是Y位置,而不是相对于tabBar。我对如何做感到困惑,因为我是以编程方式添加按钮,而不是通过故事板(我知道如何使用相对约束)。这里是我设置位置的地方:

override func viewDidLayoutSubviews() {
    button.frame = CGRect.init(x: self.tabBar.center.x - 32, y: self.view.bounds.height - 115, width: 64, height: 64)
}
如何以编程方式设置按钮的相对位置,使其始终位于选项卡栏的一半上方和一半下方,而不管手机大小如何?

试试这个

let tabBarHeight = 64
let mainButton: UIButton = UIButton(type: .custom)
mainButton.frame = CGRect(origin: CGPoint(x: 0.0, y: win.frame.size.height),size: CGSize(width: tabBarHeight, height: tabBarHeight))
mainButton.center = CGPoint(x: win.center.x, y: win.frame.size.height - tabBar.layer.bounds.height)
您可以设置大小并将按钮的中心设置为选项卡栏的中心,或者像下面的代码一样向上移动一点