Как обновить ограничение в tableViewController, нажав кнопку showMore / showLess - PullRequest
0 голосов
/ 24 июня 2018

У меня есть tableViewController и в первой ячейке я поместил textView с кнопкой showMore / ShowLess. как в этом ответе: Как добавить UIButton Show More / Show Less для управления UITextView . Мой вопрос: как я могу обновить ограничения, когда пользователь нажимает на кнопку showMore и когда нажимает на showLess? У меня есть 2 класса, один называется: 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
    }
}
 }

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

Создайте выход для ограничения и установите желаемое значение следующим образом:

@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()
})
0 голосов
/ 24 июня 2018

сохраняйте ограничение IBOutlet и обновляйте значение, но в вашем случае, если у вас есть uitableview, я бы предложил использовать собственные методы tableview, например,

1 - когда вы хотите сохранить ячейку как показано меньше, установитевысота ячейки некоторой константы, скажем, 50, в высоте ячейки просмотра 2 - после того, как вы нажмете на кнопку, чтобы больше обновлять высоту ячейки, вы можете отслеживать высоту каждой ячейки для отдельных случаев в модели / dic

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...