在屏幕右下方放置一个按钮

问题描述 投票:1回答:2

我在定位按钮时遇到麻烦。我试图将按钮放置在屏幕的右下角。我是自动布局的新手。该按钮当前显示在屏幕的左上方。

这是我的代码:

        // add image
        button.setBackgroundImage(UIImage(named:"test.png"), for: .normal)
        // add action
        button.addTarget(self, action: #selector(btnPressed), for: UIControl.Event.touchUpInside)

        button.translatesAutoresizingMaskIntoConstraints = false
        // add button on view
        self.view.addSubview(button)
        // all constaints

        let widthContraints =  NSLayoutConstraint(item: button, attribute: NSLayoutConstraint.Attribute.width, relatedBy: NSLayoutConstraint.Relation.equal, toItem: nil, attribute: NSLayoutConstraint.Attribute.notAnAttribute, multiplier: 1, constant: 40)

        let heightContraints = NSLayoutConstraint(item: button, attribute: NSLayoutConstraint.Attribute.height, relatedBy: NSLayoutConstraint.Relation.equal, toItem: nil, attribute: NSLayoutConstraint.Attribute.notAnAttribute, multiplier: 1, constant: 40)

        let xContraints = NSLayoutConstraint(item: button, attribute: NSLayoutConstraint.Attribute.topMargin, relatedBy: NSLayoutConstraint.Relation.equal, toItem: view, attribute: NSLayoutConstraint.Attribute.topMargin, multiplier: 1, constant: 20)

        let yContraints = NSLayoutConstraint(item: button, attribute: NSLayoutConstraint.Attribute.leftMargin, relatedBy: NSLayoutConstraint.Relation.equal, toItem: view, attribute: NSLayoutConstraint.Attribute.leftMargin, multiplier: 1, constant: 20)

        NSLayoutConstraint.activate([heightContraints,widthContraints,xContraints,yContraints])
ios swift xcode autolayout ios-autolayout
2个回答
2
投票

将按钮约束放到底部像这样

let yContraints = NSLayoutConstraint(item: button, attribute: NSLayoutConstraint.Attribute.bottomMargin, relatedBy: NSLayoutConstraint.Relation.equal, toItem: view, attribute: NSLayoutConstraint.Attribute.bottom, multiplier: 1, constant: 20)

如果要正确定位,请从右边距处给它约束

let xContraints = NSLayoutConstraint(item: button, attribute: NSLayoutConstraint.Attribute.trailing, relatedBy: NSLayoutConstraint.Relation.equal, toItem: view, attribute: NSLayoutConstraint.Attribute.trailing, multiplier: 1, constant: 20)

根据您的设计偏好更改常数


0
投票

删除此主要约束条件

let xContraints = NSLayoutConstraint(item: button, attribute: NSLayoutConstraint.Attribute.topMargin, relatedBy: NSLayoutConstraint.Relation.equal, toItem: view, attribute: NSLayoutConstraint.Attribute.topMargin, multiplier: 1, constant: 20)

并添加底部约束

NSLayoutConstraint.activate([
    button.bottomAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor, constant: -20),
    button.trailingAnchor.constraint(equalTo: self.view.trailingAnchor, constant: -20),
    button.widthAnchor.constraint(equalToConstant: 40),
    button.heightAnchor.constraint(equalToConstant: 40)
])
© www.soinside.com 2019 - 2024. All rights reserved.