如何调整我的约束,以便只有当用户滚动UITableView时才会出现我的UITextView?

时间:2016-09-26 10:35:37

标签: ios swift uitableview uistoryboard nslayoutconstraint

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

下方

enter image description here

UITableView有4个约束:UIBottomBarleadingtrailingbottom其中top等于top底部。

UITableView还有4个约束:UITableViewleadingtrailingtop其中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语句中包含约束更改。你能帮帮我吗?

1 个答案:

答案 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的最小和最大高度