Ios 获取UIView高度并将其用于自身的约束

Ios 获取UIView高度并将其用于自身的约束,ios,swift,uiview,constraints,Ios,Swift,Uiview,Constraints,在实际显示之前,如何才能查看我的ui视图的高度 这就是我所尝试的: print(wishWishView.frame.size.height) self.view.addSubview(self.wishWishView) wishWishView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor).isActive = true wishWishView.trailingAnchor.constraint(equalTo:

在实际显示之前,如何才能查看我的
ui视图的
高度

这就是我所尝试的:

print(wishWishView.frame.size.height)

self.view.addSubview(self.wishWishView)

wishWishView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor).isActive = true
wishWishView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor).isActive = true

wishWishConstraint =  wishWishView.topAnchor.constraint(equalTo: self.view.bottomAnchor)
wishWishConstraint.isActive = true

UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 1.0, initialSpringVelocity: 1.0, options: .curveEaseInOut, animations: {
        self.transparentView.alpha = 0.7
        self.wishWishConstraint = self.wishWishView.topAnchor.constraint(equalTo: self.view.bottomAnchor, constant: - self.keyboardHeight)
        self.view.layoutIfNeeded()

    }, completion: nil)
问题是在视图实际显示之前,
wishWishView.frame.size.height
0

我真正想要实现的是隐藏底部的视图。我知道我可以使用常量:1000,但这是蛮力,不是很干净

编辑:

过程:

1.用户点击按钮

2.视图显示在皮艇板上方从下到右的位置

3.用户取消该视图

4.视图从视图底部移动


我有所有的
函数
变量
func view出现
keyboardHeight
,…),但我正在努力解决
约束

为什么不删除最后一个约束,而是将视图的顶部锚定固定到其superview的底部锚定。现在你已经隐藏了你想要的视图


然后,当您想要取消隐藏视图时,只需更改该约束的常量(您可以在此处使用视图的高度),并在UIView动画块中调用layoutifneed()。

为什么不删除最后一个约束,而是将视图的上锚定与其superview的下锚定相关联。现在你已经隐藏了你想要的视图


然后,当您想要取消隐藏视图时,只需更改该约束的常数(您可以在此处使用视图的高度),并在UIView动画块中调用layoutifneed()。

因此,我解决了我的问题,动画现在正按预期工作。然而,实际问题仍然没有解决

let height = CGFloat(130)

@objc func addWishButtonTapped(){    

    let screenSize = UIScreen.main.bounds.size
    self.wishWishView.frame = CGRect(x: 0, y: screenSize.height, width: screenSize.width, height: height)
    self.view.addSubview(self.wishWishView)

    UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 1.0, initialSpringVelocity: 1.0, options: .curveEaseInOut, animations: {
    self.transparentView.alpha = 0.7
    self.wishWishView.frame = CGRect(x: 0, y: screenSize.height - self.height - self.keyboardHeight, width: screenSize.width, height: self.height)

}, completion: nil)

正如您所看到的,我使用的是硬编码的
高度

,因此我解决了我的问题,动画现在按预期工作。然而,实际问题仍然没有解决

let height = CGFloat(130)

@objc func addWishButtonTapped(){    

    let screenSize = UIScreen.main.bounds.size
    self.wishWishView.frame = CGRect(x: 0, y: screenSize.height, width: screenSize.width, height: height)
    self.view.addSubview(self.wishWishView)

    UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 1.0, initialSpringVelocity: 1.0, options: .curveEaseInOut, animations: {
    self.transparentView.alpha = 0.7
    self.wishWishView.frame = CGRect(x: 0, y: screenSize.height - self.height - self.keyboardHeight, width: screenSize.width, height: self.height)

}, completion: nil)


如您所见,我使用的是硬编码的
高度

您试图对第一个约束做什么?您正在将wishWishView的高度设置为自身的高度。只需将
高度设置为与
self.view
相同的高度即可?您需要设置它相对于另一个视图的高度或将其设置为常量。把它等同于它本身并没有什么效果。哦,我也意识到了。。删除了,谢谢。你知道如何解决主要问题吗?@Chris,那会很有帮助的。我已经为我们创建了一个聊天室,你想用第一个约束做什么?您正在将wishWishView的高度设置为自身的高度。只需将
高度设置为与
self.view
相同的高度即可?您需要设置它相对于另一个视图的高度或将其设置为常量。把它等同于它本身并没有什么效果。哦,我也意识到了。。删除了,谢谢。你知道如何解决主要问题吗?@Chris,那会很有帮助的。我已经为我们创建了一个聊天室我更新了我的问题,并尝试使用您的解决方案,但无法使其工作。在添加约束之前,您正在执行wishView.TranslatesAutoResizezingMaskintoConstraints=false吗?此外,您存储了约束,但实际上并没有更改该约束;你正在重新分配一个新的。您需要这样修改它,例如,self.myConstraint.constant=100。然后将动画块放在后面。查看我的答案我更新了我的问题,并尝试使用您的解决方案,但无法使其工作。在添加约束之前,您正在执行wishView.TranslatesAutoReshizingMaskintoConstraints=false吗?此外,您存储了约束,但实际上并没有更改该约束;你正在重新分配一个新的。您需要这样修改它,例如,self.myConstraint.constant=100。然后把你的动画块放在后面。看看我的答案