gpt4 book ai didi

swift - 如何添加一个 Show More/Show Less UIButton 来控制 UITextView

转载 作者:行者123 更新时间:2023-11-28 12:34:58 25 4
gpt4 key购买 nike

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

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

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

最佳答案

你可以让这个东西以这种方式工作:

<强>1。在 Storyboard 中添加 UITextView 和 UIButton。

enter image description here

<强>2。如果您使用的是自动布局约束,请制作 UITextView 高度的导出。

enter image description here

<强>3。在 ViewController 类中,将 outlets 设置为:

@IBOutlet var txtView: UITextView!

@IBOutlet var btn_Show: UIButton!

@IBOutlet var textView_HeightConstraint: NSLayoutConstraint!

<强>4。创建一个方法,根据其中的文本为您提供 UITextView 的高度。

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
}

<强>5。单击按钮时:

   @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

}

}

6.如果您不使用 AutoLayoutConstraints,只需在单击 UIButton 时更改 UITextView 的框架(高度)。不需要“textView_HeightConstraint

 @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

}

}

关于swift - 如何添加一个 Show More/Show Less UIButton 来控制 UITextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41107980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com