【问题标题】:Constraints Issues On UI buttonUI 按钮上的约束问题
【发布时间】:2021-05-24 10:11:14
【问题描述】:

在使用锚点练习编程约束时,我遇到了一个问题,即在使用 iPhone 8 或 8 plus 模拟器时隐藏按钮的可见性,如下图所示。这是由于我为按钮设置的当前坐标值。但是,当我切换到 iPhone 12 时,按钮变得可见。如何设置坐标值以使按钮可见并且在 iPhone 8 或 8 plus 上的相同位置?

let iosImageView: UIImageView = {
        let imageview = UIImageView(image: #imageLiteral(resourceName: "icons8-ios-logo-128"))
        imageview.translatesAutoresizingMaskIntoConstraints = false
        return imageview
    }()
    
    let press: UIButton = {
        let buttonPress = UIButton.init(type: .roundedRect)
        buttonPress.setTitle("Tap Me", for: .normal)
        buttonPress.backgroundColor = .black
        buttonPress.frame = CGRect(x: 110, y: 700, width: 200, height: 50)

        return buttonPress
    }()
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        addSubviews()
        setConstraints()
        // Do any additional setup after loading the view.
    }

    func addSubviews(){
        view.addSubview(iosImageView)
        view.addSubview(press)
    }
    
    func setConstraints(){
        
        NSLayoutConstraint.activate([
            iosImageView.centerXAnchor.constraint(equalTo: view.centerXAnchor),
            iosImageView.topAnchor.constraint(equalTo: view.topAnchor, constant: 200),
            iosImageView.widthAnchor.constraint(equalToConstant:  200),
            iosImageView.heightAnchor.constraint(equalToConstant: 200),
           
            press.centerXAnchor.constraint(equalTo: view.centerXAnchor),
            press.leadingAnchor.constraint(equalTo: view.leadingAnchor),
            press.trailingAnchor.constraint(equalTo: view.trailingAnchor)

        ])
    }

【问题讨论】:

    标签: ios autolayout


    【解决方案1】:

    您对press 的约束无效。您未能指定垂直位置。而且您忘记将translatesAutoresizingMaskIntoConstraints 设置为假。我很惊讶这个按钮竟然出现了。

    (也切断关于buttonPress.frame 的线。框架和约束是相反的;使用一个或另一个。)

    【讨论】:

    • 如何以编程方式改进设置约束?
    • 我认为我的回答已经回答了这个问题。
    • 我知道你做了我不是指它。我正在努力使用锚点,这非常困难。我该如何改进?
    • 这不是编程问题。有许多自动布局教程和书籍,但这不是 Stack Overflow 主题。我相信我已经回答了这个问题。
    猜你喜欢
    • 1970-01-01
    • 2018-07-18
    • 2015-10-07
    • 1970-01-01
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    相关资源
    最近更新 更多