Swift 如何通过点击showMore/showLess按钮更新tableViewController中的约束
我有一个tableViewController,在第一个单元格中,我放置了一个带有showMore/ShowLess按钮的textView。就像这个答案:。 我的问题是:当用户单击showMore按钮和单击showLess时,如何更新约束? 我有两个类别,一个叫做:TableViewController,另一个是TableViewControllerCellSwift 如何通过点击showMore/showLess按钮更新tableViewController中的约束,swift,uikit,Swift,Uikit,我有一个tableViewController,在第一个单元格中,我放置了一个带有showMore/ShowLess按钮的textView。就像这个答案:。 我的问题是:当用户单击showMore按钮和单击showLess时,如何更新约束? 我有两个类别,一个叫做:TableViewController,另一个是TableViewControllerCell class TableViewControllerCell: UITableViewCell, UITextViewDelegate {
class TableViewControllerCell: UITableViewCell, UITextViewDelegate {
@IBOutlet weak var descriptionTextView: UITextView!
@IBOutlet weak var seeMoreButtonO: UIButton!
var heightConstraint:CGFloat = 50 // I don't know how to implement the constraint value
override func awakeFromNib() {
super.awakeFromNib()
}
func getRowHeightFromText(strText : String!) -> CGFloat
{
let textView : UITextView! = UITextView(frame: CGRect(x: descriptionTextView.frame.origin.x,y: 0,width: descriptionTextView.frame.size.width,height: 0))
textView.text = strText
textView.font = UIFont(name: "Fira Sans", size: 16.0)
textView.sizeToFit()
var txt_frame : CGRect! = CGRect()
txt_frame = textView.frame
var size : CGSize! = CGSize()
size = txt_frame.size
size.height = 50 + txt_frame.size.height
return size.height
}
@IBAction func showMoreButton(_ sender: UIButton) {
if sender.tag == 0 {
let height = self.getRowHeightFromText(strText: self.descriptionTextView.text)
self.heightConstraint = height
self.layoutIfNeeded()
seeMoreButtonO.setTitle("ShowLess", for: .normal)
sender.tag = 1
} else {
self.heightConstraint = 116
self.layoutIfNeeded()
seeMoreButtonO.setTitle("ShowMore", for: .normal)
sender.tag = 0
}
}
}
保留您的约束和更新值,但在您的情况下,如果您有uitableview,我建议使用tableview自己的方法,如下所示 1-若要使单元格保持为“显示较少”,请将某个常量的单元格高度设置为50,单位为HeightOfTableViewCell
2-点击show more(显示更多)更新您的单元格高度后,您可以在model/dic中跟踪各个案例的每个单元格高度,为约束创建一个出口,并按如下方式设置所需值:
@IBOutlet weak var seeMoreConstraint: NSLayoutConstraint!
在要更新约束的位置:
UIView.animate(withDuration: 0.1, animations: { () -> Void in
seeMoreConstraint.constant = /* Desired value, for example 50.0 */
self.view.setNeedsLayout() /* This tells the UI to update */
self.view.layoutIfNeeded()
})