Ich bin ein popover wie folgt präsentiert:Wie kann ich ein Popover erstellen, das eine scrollView enthält, die automatisch nach oben gescrollt wird?
let popoverContent = (self.storyboard?.instantiateViewController(withIdentifier: segueIdentifiers.informationPopover))! as UIViewController
let nav = UINavigationController(rootViewController: popoverContent)
nav.modalPresentationStyle = UIModalPresentationStyle.popover
let popover = nav.popoverPresentationController
popoverContent.preferredContentSize = CGSize(width: 500,height: 600)
popover?.delegate = self
popover?.sourceView = self.view
popover?.sourceRect = CGRect(x: 0, y: 0, width: 100, height: 100)
self.present(nav, animated: true, completion: nil)
und
func adaptivePresentationStyle(for controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle {
return .none
}
Die popover ist aus einem in der storyboard
erstellt viewController
geschaffen.
Die viewController
mit der popover
ist erstellt hat das folgende Layout.
--View
---Scroll View
----View
-----Text View
Ich hatte zunächst ein Problem, bei dem eine peinliche Menge an Speicherplatz dort zwischen dem oberen Rand des Behälters und dem Text View
war. Unter Verwendung von this link sah ich, dass ich die Adjusts Scroll View Insets
entfernen konnte. Das hat den unbeholfenen Abstand im oberen Bereich behoben, aber wenn sich der scrollView
präsentiert, wird immer noch ein Drittel nach unten gescrollt und ein Teil des Textes oben ist ausgeblendet.
Ausgabe: Die scrollView
ist ein Drittel des Weges nach unten gescrollt, wenn es präsentiert wird.
Fragen: Gibt es eine Möglichkeit die scrollView
werden automatisch an der Spitze mit dem storyboard
, das heißt, eine Laufzeit Attribut gescrollt zu initialisieren? Wenn nicht, wie kann ich das programmatisch machen, da ich die popover
programmatisch über eine Storyboard-ID erstelle?
Update 1 Ich habe versucht, meine Subklassen viewController
und einen Auslass für die scrollView
zu schaffen. In meinem viewDidLoad
, viewWillAppear
, viewDidLayoutSubviews
, viewDidAppear
und viewWillLayoutSubviews
habe ich den folgenden Code ausprobiert. Das hat mein Problem nicht gelöst.
let scroll2TopOffset = CGPoint(x: 0, y: 0)
self.aboutUsScrollView.setContentOffset(scroll2TopOffset, animated: true)