Ответ 1
Вот решение, в котором UITextField не является частью UICollectionView.
Я добавил collectionView и textField на свою раскадровку со следующими ограничениями макета: CollectionView: переход на супервизор, высоту, верхнее представление, горизонтальное расстояние с textField. TextField: Высота, равная коллекцииView, Trailing to superview, Width = 100, горизонтальное расстояние с помощью коллекцииView.
Я создал IBOutlet для ограничения ширины textField. Ширина изменяется динамически по мере ввода текста.
Свифт 3 Пример кода
class ViewController: UIViewController {
@IBOutlet weak var collectionView: UICollectionView!
@IBOutlet weak var textField: UITextField!
@IBOutlet weak var textFieldWidthConstraint: NSLayoutConstraint!
var textArray: [String] = [String]()
@IBAction func editingChanged(_ sender: AnyObject) {
let size = textField.sizeThatFits(textField.frame.size)
textFieldWidthConstraint.constant = max(size.width,100)
if textArray.count > 0 {
self.collectionView.scrollToItem(at: IndexPath(row: self.textArray.count-1, section: 0), at: .right, animated: true)
}
}
@IBAction func addText(_ sender: AnyObject) {
if textField.text?.characters.count ?? 0 > 0 {
textArray.append(textField.text!)
textField.text = ""
textFieldWidthConstraint.constant = 100
let newIndexPath = IndexPath(row: textArray.count-1, section: 0)
collectionView.insertItems(at: [newIndexPath])
collectionView.performBatchUpdates({
}, completion: { (_) in
self.collectionView.scrollToItem(at: newIndexPath, at: .right, animated: true)
})
}
}
}