swift - heightAnchor.constraint 不改变 View 高度

标签 swift constraints ios-autolayout autoresize nslayoutanchor

我使用这段代码:

func show(){
    view.translatesAutoresizingMaskIntoConstraints = false
    view.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 0).isActive = true
    view.topAnchor.constraint(equalTo: view.topAnchor, constant: 0).isActive = true
    view.heightAnchor.constraint(equalToConstant: view.frame.height - 300).isActive = true
    view.rightAnchor.constraint(equalTo: view.rightAnchor, constant: 0).isActive = true
}

func hide(){
    view.translatesAutoresizingMaskIntoConstraints = false
    view.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 0).isActive = true
    view.topAnchor.constraint(equalTo: view.topAnchor, constant: 0).isActive = true
    view.heightAnchor.constraint(equalToConstant: view.frame.height + 300).isActive = true
    view.rightAnchor.constraint(equalTo: view.rightAnchor, constant: 0).isActive = true
}

show 功能正常,但 hide 功能不起作用,heightAnchor 不起作用。

最佳答案

先声明约束

var heightArchonWhenShow = view.heightAnchor.constraint(equalToConstant: view.frame.height - 300)
var heightArchonWhenHide = view.heightAnchor.constraint(equalToConstant: view.frame.height + 300)

在初始化您对 ViewDidLoad 的约束后

func setConstraints(){
    view.translatesAutoresizingMaskIntoConstraints = false
    view.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 0).isActive = true
    view.topAnchor.constraint(equalTo: view.topAnchor, constant: 0).isActive = true
    view.rightAnchor.constraint(equalTo: view.rightAnchor, constant: 0).isActive = true
    heightArchonWhenShow.isActive = true
}

并且简单激活它们,不要覆盖。像这样:

func show(){
    heightArchonWhenShow.isActive = true
    heightArchonWhenHide.isActive = false
}

func hide(){
    heightArchonWhenShow.isActive = false
    heightArchonWhenHide.isActive = true
}

如果你想你也可以动画变化,就像那样:

func hide(){
    heightArchonWhenShow.isActive = false
    heightArchonWhenHide.isActive = true

    UIView.animate(withDuration: 0.3) {
        self.view.layoutIfNeeded()
    }
}

关于swift - heightAnchor.constraint 不改变 View 高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53739783/

相关文章:

c++ - 涉及 vector (数组)的快速简单的约束规划

angularjs - Angular 路由参数约束

ios - 将 subview 内的对象固定到位

ios - 动态移动(动画)UITextField

swift - 如何检查用户是否需要使用 Firebase 身份验证重新进行身份验证

swift - 如何以编程方式更改约束常量?

iOS Autolayout 字体随设备大小调整(iPhone 6 plus、iPhone 6、iPhone 5)

swift - Int 和 Uint8 swift 之间的区别

ios - 从 UIApplication 子类呈现一个 ViewController

ios - 重新打开项目时 MKMapkit 约束错误