Ich habe einige Code, wo ich in einem "schließen" UIButton
zu der UIPageController.view
hinzufügen, und das funktioniert super.Line-up CenterYAnchor von UIButton zu UIPageControl Swift
ARBEITSCode:
class func closeButton(_ pageController: UIPageViewController) -> UIButton {
let button = UIButton()
button.setTitleColor(UIColor.white, for: UIControlState())
button.setTitle("Close", for: UIControlState())
button.titleLabel!.font = UIFont.systemFont(ofSize: 15)
button.contentHorizontalAlignment = UIControlContentHorizontalAlignment.left
button.translatesAutoresizingMaskIntoConstraints = false
pageController.view.addSubview(button)
button.widthAnchor.constraint(equalToConstant: 50).isActive = true
button.heightAnchor.constraint(equalToConstant: 36).isActive = true
button.trailingAnchor.constraint(equalTo: pageController.view.trailingAnchor).isActive = true
button.bottomAnchor.constraint(equalTo: pageController.view.bottomAnchor).isActive = true
return button
}
Aber dann testete ich meinen Code auf dem iPhone X-Simulator und die UIPageControl
ist viel höher aus dem Boden als die anderen iPhones. So, jetzt, dass schließen Knopf ist gerade in der unteren abgerundeten Ecke und die UIPageControl
ist viel höher.
So dann habe ich versucht, die die UIPageControl
mit Referenzierung:
let pageControl: UIPageControl = UIPageControl.appearance()
Und dann die button.bottomAnchor.constraint...
mit ersetzen:
button.centerYAnchor.constraint(equalTo: pageControl.centerYAnchor).isActive = true
Aber dies bewirkt, dass ein Fehler ausgelöst werden. Ich habe versucht, die UIPageControl.frame
zu drucken, und es ist 0,0,0,0. Ich nehme also an, dass das etwas damit zu tun hat.
Gibt es eine Möglichkeit, eine Einschränkung für das UIPageControl zu machen?
ich die Funktion in zwei Teile aufgeteilt wird. Eine, die die Schaltfläche erstellt, und eine, die sie einschränkt. Der erste Teil, der es erstellt, ich rufe immer noch in der 'ViewDidLoad', aber der zweite Teil, der einschränkt, ich rufe' viewDidLayoutSubviews'. Du hast mir einen Vorschlag gemacht. Die meisten könnten wahrscheinlich alles in 'viewDidLayoutSubviews' schreiben, aber ich habe einen anderen Teil, der entscheidet, ob'IsHidden = true' ist und der Button unter 'ViewDidLoad' erstellt werden muss. Danke nochmal! –
Gute Wahl;) In viewDidLayoutSubviews erhalten Sie Ihren pageControl-Frame und deshalb können Sie dort Ihre Constraints aktualisieren, anstatt den Teil, wo Sie Ihre Schaltfläche erstellen, ist es richtig, in viewDidLoad aufzurufen. Bitte schön ;) –