Ios 在Swift中按下按钮时更改UIView高度的问题
我正在做一个功能,当按下按钮时,UIView的高度会增加或减少 当UIView的高度减小时,该值将在情节提要中创建布局;当UIView的高度增大时,该值将为UITextView的高度 上图是在UIView拉伸之前。按下照片底部的按钮以拉伸UIView 上图是UIView拉伸后的图像。如果按上图底部的按钮,UIView将再次缩小 我想知道的第一件事是增加UIView高度的代码Ios 在Swift中按下按钮时更改UIView高度的问题,ios,swift,Ios,Swift,我正在做一个功能,当按下按钮时,UIView的高度会增加或减少 当UIView的高度减小时,该值将在情节提要中创建布局;当UIView的高度增大时,该值将为UITextView的高度 上图是在UIView拉伸之前。按下照片底部的按钮以拉伸UIView 上图是UIView拉伸后的图像。如果按上图底部的按钮,UIView将再次缩小 我想知道的第一件事是增加UIView高度的代码 @IBOutlet weak var bookInfoView: UIView! @IBOutlet
@IBOutlet weak var bookInfoView: UIView!
@IBOutlet weak var bookInfoVieweBtn: UIButton!
@IBOutlet weak var bookInfoTextView: UITextView!
@IBAction func bookInfoViewBtnTapped(_ sender: Any) {
print("##bookInfoViewBtnTapped!")
let f = bookInfoView.frame
let textView = bookInfoTextView.frame
bookInfoView.frame = CGRect(x: f.origin.x, y: f.origin.y, width: f.width, height: textView.height)
}
如果使用上面的代码按下按钮,它将不起任何作用。我应该怎么做?遵循以下步骤:-
- 在情节提要中定义高度约束
- 创建高度约束的出口
- 然后按下按钮,增加/减少文本视图的高度,如:-
textViewHeightConstant.constant = someValue
- 在情节提要中定义高度约束
- 创建高度约束的出口
- 然后按下按钮,增加/减少文本视图的高度,如:-
textViewHeightConstant.constant = someValue
@IBOutlet var yourViewHeightAnchor: NSLayoutConstraint!
@IBAction func expandClicked(_ sender: Any) {
UIView.animate(withDuration: 0.6, animations: {
self.yourViewHeightAnchor.isActive.toggle()
self.view.layoutIfNeeded()
})
}
2.将目标添加到按钮中,或者如果使用故事板或Xib将iAction拖到ViewController中。单击按钮时,您唯一的任务是取消激活/激活高度锚。(激活将用于折叠)
如果您希望使用一些动画来展开/折叠,您的expandClicked
函数应该如下所示:
@IBOutlet var yourViewHeightAnchor: NSLayoutConstraint!
@IBAction func expandClicked(_ sender: Any) {
UIView.animate(withDuration: 0.6, animations: {
self.yourViewHeightAnchor.isActive.toggle()
self.view.layoutIfNeeded()
})
}
1.为您尝试展开的视图的高度设置一些默认值。然后,如果您使用的是故事板,请为您的ViewConroller创建一个IBOutlet,并删除弱引用(这是因为我们将停用高度定位点,如果它很弱,而您将其停用,则将取消对它的定位。如果您以编程方式进行定位,则只需将高度定位点存储在局部变量中。因此,它应该类似于以下内容:
@IBOutlet var yourViewHeightAnchor: NSLayoutConstraint!
@IBAction func expandClicked(_ sender: Any) {
UIView.animate(withDuration: 0.6, animations: {
self.yourViewHeightAnchor.isActive.toggle()
self.view.layoutIfNeeded()
})
}
2.将目标添加到按钮中,或者如果使用故事板或Xib将iAction拖到ViewController中。单击按钮时,您唯一的任务是取消激活/激活高度锚。(激活将用于折叠)
如果您希望使用一些动画来展开/折叠,您的expandClicked
函数应该如下所示:
@IBOutlet var yourViewHeightAnchor: NSLayoutConstraint!
@IBAction func expandClicked(_ sender: Any) {
UIView.animate(withDuration: 0.6, animations: {
self.yourViewHeightAnchor.isActive.toggle()
self.view.layoutIfNeeded()
})
}
我想要的不是调整bookInfoTextView的高度,而是调整bookInfoView的高度以适应bookInfoTextView。即使bookInfoTextView的高度发生变化,bookInfoView的高度也不应该相同。请尝试一下。它将根据您的textview高度工作,无论是常量还是您计算它。我想要什么不是调整bookInfoTextView的高度,而是调整bookInfoView的高度以适应bookInfoTextView。即使bookInfoTextView的高度发生变化,bookInfoView的高度也不应相同。请尝试一下。它将根据textview的高度工作,无论是常量还是计算值。