github上有一个项目,关于IO
https://github.com/KennethTsang/GrowingTextView {}}我已将其下载到我的UITextView
应用中,并按照其页面上的说明进行操作。
这是我的代码:
swift
此override func viewDidLoad() {
let textView = GrowingTextView()
textView.delegate = self
textView.layer.cornerRadius = 4.0
textView.maxLength = 200
textView.maxHeight = 70
textView.trimWhiteSpaceWhenEndEditing = true
textView.placeHolder = "Say something"
textView.placeHolderColor = UIColor(white: 0.8, alpha: 1.0)
textView.placeHolderLeftMargin = 5.0
textView.font = UIFont.systemFontOfSize(15)
inputToolbar.translatesAutoresizingMaskIntoConstraints = false
textView.translatesAutoresizingMaskIntoConstraints = false
textView.returnKeyType = UIReturnKeyType.Send
inputToolbar.addSubview(textView)
let views = ["textView": textView]
let hConstraints = NSLayoutConstraint.constraintsWithVisualFormat("H:|-8-[textView]-8-|", options: [], metrics: nil, views: views)
let vConstraints = NSLayoutConstraint.constraintsWithVisualFormat("V:|-8-[textView]-8-|", options: [], metrics: nil, views: views)
inputToolbar.addConstraints(hConstraints)
inputToolbar.addConstraints(vConstraints)
位于UITextView
:
UITableView
有4个约束:UIBottomBar
,leading
,trailing
和bottom
其中top
等于top
底部。
UITableView
还有4个约束:UITableView
,leading
,trailing
和top
其中bottom
等于bottom
} 最佳。
我还将IBOutlet与UIBottomBar
的{{1}}约束相关联,我在代码中修改它:
bottom
一切都很顺利。
我需要在这里介绍一个更改 - 当UIBottomBar
滚动到顶部时隐藏@IBOutlet weak var bottomConstraint: NSLayoutConstraint!
func keyboardWillChangeFrame(notification: NSNotification) {
let endFrame = (notification.userInfo![UIKeyboardFrameEndUserInfoKey] as! NSValue).CGRectValue()
bottomConstraint.constant = CGRectGetHeight(view.bounds) - endFrame.origin.y
self.view.layoutIfNeeded()
}
。但是当用户开始滚动时 - textView
出现并按预期工作 - 随着每一行新文本的增长而增长。
我考虑在UITableView
上使用方法textView
,但我不知道如何调整那里的特定约束。
这是我目前所拥有的:
scrollViewDidScroll
现在我需要在此UITableView
语句中包含约束更改。你能帮帮我吗?
答案 0 :(得分:0)
首先,您应该将高度约束设置为textview的超级视图,并设置textview的顶部和底部约束0。
然后你必须动态地增加你的超级视图的高度文本确实改变了textview的委托方法
- (void)textViewDidChange:(UITextView *)textView
{
CGFloat fixedWidth = textView.frame.size.width;
CGSize newSize = [textView sizeThatFits:CGSizeMake(fixedWidth, MAXFLOAT)];
if (newSize.height>133)
self.containerCiewHeightConstraints.constant=153;
else if (newSize.height<36){
self.containerCiewHeightConstraints.constant=50;
}
else
self.containerCiewHeightConstraints.constant=newSize.height+18;
}
这里的containerCiewHeightConstraints是我的超级视图的约束,50和133是我的textview的最小和最大高度