Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何通过点击showMore/showLess按钮更新tableViewController中的约束_Swift_Uikit - Fatal编程技术网

Swift 如何通过点击showMore/showLess按钮更新tableViewController中的约束

Swift 如何通过点击showMore/showLess按钮更新tableViewController中的约束,swift,uikit,Swift,Uikit,我有一个tableViewController,在第一个单元格中,我放置了一个带有showMore/ShowLess按钮的textView。就像这个答案:。 我的问题是:当用户单击showMore按钮和单击showLess时,如何更新约束? 我有两个类别,一个叫做:TableViewController,另一个是TableViewControllerCell class TableViewControllerCell: UITableViewCell, UITextViewDelegate {

我有一个tableViewController,在第一个单元格中,我放置了一个带有showMore/ShowLess按钮的textView。就像这个答案:。 我的问题是:当用户单击showMore按钮和单击showLess时,如何更新约束? 我有两个类别,一个叫做:TableViewController,另一个是TableViewControllerCell

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