我只想修改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”仍保持相同的大小。
我是Swift
和Xcode
的新手,所以我的所有技巧都已经用尽了,我不知道这是iOS版本问题,还是一些典型的Xcode
突发奇想。
修改UITextView
高度的正确方法是什么?
答案 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:
屏幕2: