Animieren einer UIView-Rahmen, Untersicht UIScrollView nicht immer animieren

In diese Beispiel.

Ich bin zu animieren, die PhotoViewerViewController Rahmen, wenn ich animieren, aus der tabBarController (für Vollbild-Effekt). Der PhotoViewer verwendet eine uiscrollview generieren, die gleiche Art von Effekt apples Fotos-app hat. Aus welchem Grund auch immer manchmal ist es animiert, zusammen mit meiner PhotoViewer Rahmen, und manchmal nicht.

Sehen Sie im ersten Beispiel springt es beim erhöhen der frame-Größe, aber animiert schön wenn die Verringerung der Bildgröße (und wiederherstellen der tab-Leiste).

Jedoch in diese Beispiel, wenn das Foto vertikal springt in beide Richtungen.

In beiden Fällen, wenn ich Zoomen Sie in das Bild mit der scrollview, es korrekt animiert in beide Richtungen.

Ich weiß, der Beweis ist da, aber ich kann nicht meine finger auf, was hier passiert.

Hier ist meine animation block:

void (^updateProperties) (void) = ^ {
    self.navigationController.navigationBar.alpha = hidden ? 0.0f : 1.0f;
    self.navigationController.toolbar.alpha = hidden ? 0.0f : 1.0f;
    if (self.tabBarController) {

        int height = self.tabBarController.tabBar.bounds.size.height;
        for(UIView *view in self.tabBarController.view.subviews)
        {
            int newHeight;
            UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
            if (UIInterfaceOrientationIsPortrait(orientation)) {
                newHeight = hidden ? [[UIScreen mainScreen] bounds].size.height : [[UIScreen mainScreen] bounds].size.height - height;
            } else {
                newHeight = hidden ? [[UIScreen mainScreen] bounds].size.width : [[UIScreen mainScreen] bounds].size.width - height;
            }


            if([view isKindOfClass:[UITabBar class]])
            {
                [view setFrame:CGRectMake(view.frame.origin.x, newHeight, view.frame.size.width, view.frame.size.height)];
            } 
            else 
            {
                CGRect newFrame = CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, newHeight);
                [view setFrame:newFrame];

                //update our VC frame with animation
                [self.view setFrame:newFrame];

            }

        }
    }

};

Code angepasst von einem Beitrag SO: UITabBar nicht verstecken

Vollständige Quelle auf github.

InformationsquelleAutor Bob Spryn | 2011-07-11
Schreibe einen Kommentar