Swift 如何添加Show More/Show Less UIButton以控制UITextView

Swift 如何添加Show More/Show Less UIButton以控制UITextView,swift,uibutton,uitextview,Swift,Uibutton,Uitextview,我正在使用UITextView显示一些内容。在textView下面,我添加了一个UIButton,可以控制textView是否显示部分或全部内容 理想情况下,当点击按钮时,TextView将扩展其高度以适应内容的长度 我还没有找到一个好的解决办法。我想知道我是否应该使用UIlabel而不是textView。你可以这样做: 1。在情节提要中添加UITextView和UIButton。 2。如果您使用的是自动布局约束,请将输出设置为UITextView高度。 3。在ViewController类

我正在使用UITextView显示一些内容。在textView下面,我添加了一个UIButton,可以控制textView是否显示部分或全部内容

理想情况下,当点击按钮时,TextView将扩展其高度以适应内容的长度


我还没有找到一个好的解决办法。我想知道我是否应该使用UIlabel而不是textView。

你可以这样做:

1。在情节提要中添加UITextView和UIButton。

2。如果您使用的是自动布局约束,请将输出设置为UITextView高度。

3。在ViewController类中,将插座设置为:

@IBOutlet var txtView:UITextView

@IBOUTLE var btn_显示:UIButton

@IBOUTLE var textView\U HeightConstraint:NSLayoutConstraint

4。根据UITextView中的文本,创建一个可以为您提供UITextView高度的方法。

5。单击按钮:

6。如果不使用AutoLayoutConstraints,只需单击UIButton更改UITextView的帧(高度)。不需要“
textView\u HeightConstraint


它很容易实现。遵循以下步骤:1。创建具有静态高度的UITextView,并在textview底部添加“Showmore”按钮。2.单击UIExtView按钮更改UIExtView的高度。根据其中的文本更改高度,然后更新按钮的框架。将butto的标题改为“Showless”。这真是太好了。谢谢你的帮助!欢迎。:)如果需要任何帮助,请告诉我。
func getRowHeightFromText(strText : String!) -> CGFloat
{
    let textView : UITextView! = UITextView(frame: CGRect(x:      self.txtView.frame.origin.x,
    y: 0, 
    width: self.txtView.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 showMore_Button_Clicked(_ sender: UIButton)

     {

       if sender.tag == 0

         {
            let height = self.getRowHeightFromText(strText: self.txtView.text)

            self.textView_HeightConstraint.constant = height

            self.view.layoutIfNeeded()

            btn_Show.setTitle("ShowLess", for: .normal)

            sender.tag = 1

        }

        else
        {

            self.textView_HeightConstraint.constant = 116

            self.view.layoutIfNeeded()

            btn_Show.setTitle("ShowMore", for: .normal)

            sender.tag = 0

        }

    }
 @IBAction func showMore_Button_Clicked(_ sender: UIButton)

    {

        if sender.tag == 0

        {

            let height = self.getRowHeightFromText(strText: self.txtView.text)

            self.txtView.frame = CGRect(x: self.txtView.frame.origin.x, y: self.txtView.frame.origin.y, width: self.txtView.frame.size.width, height: height)

            btn_Show.setTitle("ShowLess", for: .normal)

            sender.tag = 1

        }

        else

        {

            self.txtView.frame = CGRect(x: self.txtView.frame.origin.x, y: self.txtView.frame.origin.y, width: self.txtView.frame.size.width, height: 116)

            btn_Show.setTitle("ShowMore", for: .normal)

            sender.tag = 0

        }

    }