尝试以编程方式更改其高度后,UITextView不会更新其高度

时间:2015-05-28 11:37:57

标签: ios xcode swift uitextview

我只想修改UITextView的高度。 从下面的代码得到的日志说,实际上, 身高从30变为400:

println(txtresponses.frame.height)       // returns 30    
var newFrame:CGRect=txtresponses.frame
newFrame.size.height=400
txtresponses.frame=newFrame
println(txtresponses.frame.height)   // returns 400

然而,从视觉上看,UITextView“txtresponses”仍保持相同的大小。 我是SwiftXcode的新手,所以我的所有技巧都已经用尽了,我不知道这是iOS版本问题,还是一些典型的Xcode突发奇想。 修改UITextView高度的正确方法是什么?

3 个答案:

答案 0 :(得分:2)

确保在主线程中调用txtresponses.frame=newFrame

dispatch_async(dispatch_get_main_queue()) {
      txtresponses.frame=newFrame
    }

所有UI更新必须从主线程完成。

答案 1 :(得分:0)

它不起作用,因为我认为你正在使用带有约束的Autolayout。请查看以下网址,这可能会对您有所帮助 - Change height constraint programmatically

答案 2 :(得分:-1)

可能会发布Autolayout。你只需删除autolayout并检查它是否有效。检查下面的代码我希望它能帮到你。

示例:

  import UIKit

    class ViewController: UIViewController {

        @IBOutlet var textView: UITextView!
        @IBOutlet var butt: UIButton!

        override func viewDidLoad() {
            super.viewDidLoad()
            textView.backgroundColor = UIColor.lightGrayColor()
            // Do any additional setup after loading the view, typically from a nib.
        }

        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }

        @IBAction func buttonAction(sender: UIButton)    {

            var newFrame:CGRect=textView.frame
            newFrame.size.height=400
            textView.frame=newFrame
        }


    }

屏幕1: enter image description here

屏幕2: enter image description here