После прочтения технических заметок на веб-сайте Apple и чтения книги Мэтта Нойбурга о программировании iOS 11 с помощью UIScrollview, поддерживаемой Autolayout, я не смог полностью понять концепцию того, как все это работает.
По сути, я хочу иметь Scrollview, у которого будет дочернее представление ChildView, где у этого дочернего представления будет Textview.
Ниже я приложил макет того, чего я пытаюсь достичь Программно, никаких раскадровок, никаких раскадровок.
и что касается кода, это то, что я обычно придумываю:
Код
let Scroller: UIScrollView = {
let scroll = UIScrollView()
scroll.translatesAutoresizingMaskIntoConstraints = false
scroll.backgroundColor = UIColor.alizarinColor()
return scroll
}()
// Content view
let ContentView : UIView = {
let content = UIView()
content.translatesAutoresizingMaskIntoConstraints = false
content.backgroundColor = UIColor.blue
return content
}()
override func viewDidLoad() {
super.viewDidLoad()
self.view.addSubview(Scroller)
// Auto layout
Scroller.leftAnchor.constraint(equalTo: view.leftAnchor, constant:0).isActive = true
Scroller.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 0).isActive = true
Scroller.rightAnchor.constraint(equalTo: view.rightAnchor, constant: 0).isActive = true
Scroller.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: 0).isActive = true
Scroller.addSubview(ContentView)
// Undefined Content view
}
Обратите внимание: для ContentView я обычно определяю ограничения для привязки краев внутри scrollview, но не в этом случае с Autolayout и тем, что я хочу, чтобы он прокручивался вертикально вверх, когда клавиатура becomesFirstResponder
. Другой способ, с помощью которого я попытался поработать, - это создать UIView
который охватывает больший размер, чем Scrollview, чтобы позволить дочернему представлению быть подпредставлением этого более крупного представления, которое имеет представление прокрутки в качестве родителя.
Моя проблема: как я могу добиться этого начиная с этого момента? Какие-либо предложения? Я думал о чем-то вроде этого: (ContentView будет большим представлением, которое позволит прокручивать его, а дочернее представление будет третьим дочерним представлением в иерархии)