【问题标题】:Swift: Changing the hight of subview programmaticallySwift:以编程方式更改子视图的高度
【发布时间】:2021-04-23 02:27:10
【问题描述】:

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

    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
        })
    }

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

你们谁知道为什么要改变子视图的位置?

非常感谢您的帮助。

【问题讨论】:

    标签: ios iphone swift5 xcode12


    【解决方案1】:

    首先,要改变高度,你可以修改框架的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()
        })
    }
    

    【讨论】:

    • ,可以,但是主故事板中的容器视图没有调整大小。当我调整子视图的大小时,你知道为什么或调整容器视图的大小吗?
    • 您是否在情节提要中使用了约束?如果是这样,我需要看看你的布局
    • 高优先级的值为 250。这应该与子视图一起调整大小。对吗?
    • 通常您不想将约束与框架混合,因此请尝试从超级视图(容器视图)更改高度约束,而不是 self.frame.size.height -= 50。因此,在容器视图的视图控制器中,执行类似self.subViewHeightConstraint.constant -= 50 的操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-18
    相关资源
    最近更新 更多