iOS 11 Swift下的UITabBar过渡问题

我在iOS 9中遇到了这个转换问题,我在下面添加了一个GIF。

看起来自定义textView假定在segue之前标签栏顶部的x轴然后稳定到其原始位置。

然而,iOS 11没有问题,但与iOS 10相同。

我也怀疑这可能是由push segue引起的,因为它与其他类型的segue(没有任何高度沉降故障)转换得很好。

我正在使用自动布局。 注释superView固定为superView 。 任何小费都将受到高度赞赏。

这是在推送时解雇UITabBar的代码。

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "previewVC" { let destinationController = segue.destination as! PostViewController destinationController.hidesBottomBarWhenPushed = true } } 

在此处输入图像描述

试试其他解决方案

使用您的文本作为UIViewController输入附件视图,因此从故事板中删除该底部视图

在视图控制器中添加以下内容

 var viewAcc: UIView? var sendButton: UIButton! var inputTextField: UITextField! override var inputAccessoryView: UIView? { return viewAcc } override var canBecomeFirstResponder: Bool { return true } 

在View Did load方法中添加以下代码
注意:请根据您的要求更改约束

  viewAcc = UIView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 44)) viewAcc?.backgroundColor = UIColor.white inputTextField = UITextField (frame: CGRect(x:8, y:0, width:UIScreen.main.bounds.width, height: 44 )) inputTextField.inputAccessoryView = nil inputTextField.delegate = self as? UITextFieldDelegate inputTextField.placeholder = "Enter message..." viewAcc?.backgroundColor = .white viewAcc?.addSubview(inputTextField); let topBorderView = UIView() topBorderView.backgroundColor = UIColor(white: 0.5, alpha: 0.5) viewAcc?.addSubview(topBorderView) viewAcc?.addConstraintsWithFormat(format: "H:|[v0]|", views: topBorderView) viewAcc?.addConstraintsWithFormat(format: "V:|[v0(0.5)]", views: topBorderView) sendButton = UIButton(type: .system) sendButton.isEnabled = true sendButton.titleLabel?.font = UIFont.systemFont(ofSize: 16) sendButton.setTitle("Send", for: .normal) sendButton.contentEdgeInsets = UIEdgeInsets(top: 8, left: 8, bottom: 8, right: 8) sendButton.addTarget(self, action: #selector(handleSend), for: .touchUpInside) viewAcc?.addSubview(sendButton) inputTextField.translatesAutoresizingMaskIntoConstraints = false sendButton.translatesAutoresizingMaskIntoConstraints = false viewAcc?.addConstraint(NSLayoutConstraint(item: inputTextField, attribute: .left, relatedBy: .equal, toItem: viewAcc, attribute: .left, multiplier: 1, constant: 8)) viewAcc?.addConstraint(NSLayoutConstraint(item: inputTextField, attribute: .top, relatedBy: .equal, toItem: viewAcc, attribute: .top, multiplier: 1, constant: 7.5)) viewAcc?.addConstraint(NSLayoutConstraint(item: inputTextField, attribute: .right, relatedBy: .equal, toItem: sendButton, attribute: .left, multiplier: 1, constant: -2)) viewAcc?.addConstraint(NSLayoutConstraint(item: inputTextField, attribute: .bottom, relatedBy: .equal, toItem: viewAcc, attribute: .bottom, multiplier: 1, constant: -8)) viewAcc?.addConstraint(NSLayoutConstraint(item: sendButton, attribute: .right, relatedBy: .equal, toItem: viewAcc, attribute: .right, multiplier: 1, constant: 0)) viewAcc?.addConstraint(NSLayoutConstraint(item: sendButton, attribute: .bottom, relatedBy: .equal, toItem: viewAcc, attribute: .bottom, multiplier: 1, constant: -4.5)) 

由于您的文本视图不是视图控制器的子视图,因此它将按预期工作

编辑IPHONE X支持

 lazy var viewAcc: SafeAreaInputAccessoryViewWrapperView = { return SafeAreaInputAccessoryViewWrapperView(for: button) }() 

希望它有所帮助