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。然后把你的动画块放在后面。看看我的答案