首页 > 解决方案 > Swift:以编程方式更改子视图的高度

问题描述

我正在实现一个子视图,但我需要以编程方式将子视图更改为高。这就是我改变高点的方式:

    func changeHigh() {
        UIView.animate(withDuration: 1.0, animations: {
            self.frame = CGRect(x: 0, y: 0, width: self.frame.width, height: self.frame.height - 50)
            
            self.buttonConstraint.constant = 10
        })
    }

但是这个实现的问题是动画视图的位置。我想要的只是改变高点而不改变位置。

你们中的任何人都知道为什么要改变子视图的位置吗?

我真的很感谢你的帮助。

标签: iosiphoneswift5xcode12

解决方案


首先,要更改高度,您只需修改size.height框架的属性即可。

self.frame.size.height -= 50 /// this will make it 50 pts less

此外,您应该在动画块外部而不是内部更改约束。然后,调用layoutIfNeeded()动画它。

这是您的代码的外观:

func changeHigh() {
    self.buttonConstraint.constant = 10
    UIView.animate(withDuration: 1.0, animations: {
        self.frame.size.height -= 50
        self.layoutIfNeeded()
    })
}

推荐阅读