ios - tool - wordpress title tag ändern




Wie erzwinge layoutSubviews von UIView. (3)

Ich habe eine benutzerdefinierte UIView, die einen dedizierten, manuell gesetzten Rahmen für Hoch- und Querformat hat, weil autoresizingMasks in meinem Fall einfach nicht funktioniert.

Ich setze diesen Rahmen in:

 - (void)viewWillAppear:(BOOL)animated

Und es funktioniert wie erwartet.

Mein Problem ist jetzt, dass meine UIView außerdem Subviews hat, die auch eine dedizierte Position für Portrait / Landscape haben.

Ich positioniere diese Subviews in:

- (void)layoutSubviews

Wenn ich meinen viewController jetzt zB im Hochformat lasse, dann drehe ich mit einem anderen viewController auf Landscape und kehre dann zu diesem viewController zurück. Ich sehe, dass meine Ansicht richtig skaliert wurde, aber die Subviews meiner Ansicht, die in layoutSubviews positioniert werden, sind noch nicht neu positioniert werden in der Größe animiert, nachdem die Ansicht bereits angezeigt wurde.

Ich mache nichts im ViewDidAppear und habe schon versucht anzurufen

 - (void)layoutIfNeeded

Ebenso gut wie:

 - (void)setNeedsLayout

In viewWillAppear, aber es scheint nichts zu ändern.

Irgendwelche Ideen, was ich falsch mache?

Vielen Dank.


Bei swift 3 @ iOS 10.1

override func viewWillAppear(animated: Bool){

    //Doesn`t neeed to call super to work
    view.setNeedsLayout()
}

läuft perfekt


Für mich hat das funktioniert [self.view setNeedsDisplay] . Dadurch wird die gesamte Ansicht neu gezeichnet. Sie können eine ausgewählte Ansicht auch neu zeichnen, indem Sie setNeedsDisplay in der jeweiligen Ansicht aufrufen, was ich in meinem Fall getan habe und es hat perfekt funktioniert.


Ich würde vorschlagen, das anfängliche Bild in viewDidLoad zu setzen und dann den Ansichtsrahmen für die Ausrichtung zu ändern

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration

Sie brauchen keine expliziten Animationen in layoutSubviews (nicht sicher, ob Sie welche hatten, aber es klang wie diese), da alle Frame-Änderungen mit der Rotationsanimation synchronisiert werden.

Außerhalb des Bildschirms sollte die Ausrichtung immer noch gedreht werden, damit Ihre Ansichten korrekt positioniert werden, wenn Sie wieder auf den Bildschirm zurückkehren.

Ich empfehle auch WWDC 2010 Session 123 "Building Animation Driven UI", die diese Dinge viel detaillierter behandelt.