, ich habe durch fast alle Stackoverflow Antworten auf diese spezielle Frage sah und selbst sah durch Tutorials, die angeblich beibringen, wie man eine Scroll-Ansicht verwenden, aber es scheint nicht für mein Projekt anzuwenden ..UIScrollView scrollt überhaupt nicht, wenn programmgesteuert in Swift? So
Hier ist, was ich bis jetzt weiß, damit eine Scroll-Ansicht richtig funktioniert, müssen Sie ihr zuerst eine Inhaltsgröße geben. Dies bestimmt die scrollbare Höhe usw.
Ich habe einen Code zur Verfügung gestellt, um Ihnen eine bessere Vorstellung davon zu geben, wie ich diese Artikel in meine Scrollview einfüge. Wenn es etwas gibt, das ich falsch mache oder wenn es einen besseren Weg gibt, dies zu tun, lass es mich wissen, ich bin noch ziemlich neu in Swift und iOS Entwicklung und in meinen Gedanken fühlt es sich an, als ob ich es richtig mache.
Die Schritte Ich nehme
- Artikel erstellen, die ich (Eingabefelder, Imageviews etc ..)
- Add angezeigt werden soll die Gegenstände auf die Ansicht des Viewcontroller. (View.addsubview (etc ..))
- eine Scrollview erstellen und seine Einschränkungen festgelegt, dass gleich der Bildschirm/view
- In unserer Ansicht nach mit allen Elementen in es in die Scroll-Ansicht
- Entspannen Sie sich und alles sollte perfekt funktionieren ?????
Hier ist mein Code, ich weiß es langwierig sein könnte, aber ich denke, es ist so erforderlich sein könnten, dass der Umfang meiner Frage
verstandenclass JobRegistrationController: UIViewController {
// ... Omitted for clarity
lazy var scrollView: UIScrollView = {
let view = UIScrollView(frame: UIScreen.main.bounds)
view.backgroundColor = .red
view.contentSize = CGSize(width: self.view.bounds.width, height: self.view.bounds.height * 2)
view.translatesAutoresizingMaskIntoConstraints = false
return view
}()
//... Omitted for clarity
let scrollContentView: UIView = {
let view = UIView()
view.translatesAutoresizingMaskIntoConstraints = false
return view
}()
override func viewDidLoad() {
super.viewDidLoad()
// Need so that view controller is not behind nav controller
self.edgesForExtendedLayout = []
view.addSubview(scrollView)
scrollView.addSubview(scrollContentView)
scrollContentView.addSubview(jobTypeField)
scrollContentView.addSubview(jobTypeDividerLine)
// x, y, width and height constraints
scrollView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
scrollView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
scrollView.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
scrollView.heightAnchor.constraint(equalTo: view.heightAnchor).isActive = true
// x, y, width and height constraints
scrollContentView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
scrollContentView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
scrollContentView.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
scrollContentView.heightAnchor.constraint(equalTo: view.heightAnchor).isActive = true
// x, y, width and height constraints
jobTypeField.leftAnchor.constraint(equalTo: scrollContentView.leftAnchor, constant: 20).isActive = true
jobTypeField.topAnchor.constraint(equalTo: scrollContentView.topAnchor).isActive = true
jobTypeField.rightAnchor.constraint(equalTo: scrollContentView.rightAnchor, constant: -8).isActive = true
jobTypeField.heightAnchor.constraint(equalToConstant: 30).isActive = true
// x, y, width and height constraints
jobTypeDividerLine.leftAnchor.constraint(equalTo: scrollContentView.leftAnchor, constant: 20).isActive = true
jobTypeDividerLine.topAnchor.constraint(equalTo: jobTypeField.bottomAnchor).isActive = true
jobTypeDividerLine.rightAnchor.constraint(equalTo: scrollContentView.rightAnchor).isActive = true
jobTypeDividerLine.heightAnchor.constraint(equalToConstant: 0.5).isActive = true
Hi, danke für den Vorschlag.Wenn ich in meiner Ansicht rolle, sehe ich, wie sich die Bildlaufleiste nach oben und unten bewegt, aber der Inhalt meiner Ansicht bewegt sich nicht –
@EdwardLim Das ist ein anderes Problem. Die Lösung dafür besteht darin, alle Ihre Unteransichten in einer einzigen UIView zu platzieren, sodass Sie die einzelne UIView als Unteransicht innerhalb der scrollView hinzufügen können. Vermeiden Sie alle Unteransichten innerhalb der scrollView, ohne eine einzige UIView "scrollContentView" für alle zu haben. Andernfalls werden Sie auf große Fehler stoßen, wie Sie es zum Beispiel beschrieben haben. –
Hallo könntest du bitte vorschlagen, wie man das richtig macht? Ich habe bereits versucht, eine Ansicht in die Bildlaufansicht hinzuzufügen, aber es scheint genau dasselbe zu tun. –