Frage

Ich habe eine Dateneingabe-Anwendung, die der Benutzer über 6 Stücke von Informationen alle auf verschiedenen Ansichten in einem Navigationscontroller hat eingeben. Dies funktioniert gut, aber sobald der Benutzer auf die Anwendung verwendet wird die Zeit, die für den nächsten Bildschirm rufen Sie die Benutzer angezeigt werden verlangsamt.

habe ich versucht, die Anwendung ohne die Animationen, aber es ist nicht ganz richtig fühlen. Gibt es eine Möglichkeit, die Animationen zu erhalten auftreten schneller? Ich bin in erster Linie eine Navigationssteuerung, Tabellenansichten verwenden und Picker Aussicht.

War es hilfreich?

Lösung

Es geht um eine Strafe sein, jedes Mal, wenn Sie eine neue Ansicht laden, Sie Bildschirme zu konsolidieren könnten versuchen, eine Scroll-Ansicht oder ein anderes Layout verwenden. Auch, wenn Sie alle unnötigen Grafiken laden Sie möchten sie entfernen.

Sie können auch jede Ansicht als ein Subview hinzufügen selbst in dem Fall, dass Sie die Kontrolle über die Animation Dauer unter anderem haben. Dieser Code wird das für Sie tun, obwohl Vorsicht, wie ich es gerade geschrieben und habe es nicht getestet (Der Übergang Stil und boolean Parameter entfernt werden können, da sie nichts tun, gerade jetzt).

UIViewControllerExtendedPresentModalViewController.h

#import <Foundation/Foundation.h>

typedef enum _ExtendedModalTransitionStyle
{
    ExtendedModalTransitionStyleTopDown 
} ExtendedModalTransitionStyle;

@interface UIViewController ( ExtendedPresentModalViewController )
- (void)presentModalViewController: (UIViewController*)modalViewController 
               withTransitionStyle: (ExtendedModalTransitionStyle)style
                          animated: (BOOL)animated;

- (void)dismissModalViewController: (UIViewController*)modalViewController
               withTransitionStyle: (ExtendedModalTransitionStyle)style
                          animated: (BOOL)animated;
@end

UIViewControllerExtendedPresentModalViewController.m

#import "UIViewControllerExtendedPresentModalViewController.h"
#import <QuartzCore/QuartzCore.h>

@implementation UIViewController ( ExtendedPresentModalViewController )

    - (void)presentModalViewController: (UIViewController*)modalViewController 
                   withTransitionStyle: (ExtendedModalTransitionStyle)style
                              animated: (BOOL)animated
    {
        [modalViewController retain]; // we'll need this for a little while, hang on to it.

        CATransition* transition = [CATransition animation];
        [transition setDuration: 0.4];
        [transition setTimingFunction: 
         [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionLinear]];
        [transition setType: kCATransitionMoveIn];
        [transition setSubtype: kCATransitionFromBottom];
        [[[self view] layer] addAnimation: transition 
                                   forKey: nil];
        [[self view] addSubview: [modalViewController view]];
    }

    - (void)dismissModalViewController: (UIViewController*)modalViewController
                   withTransitionStyle: (ExtendedModalTransitionStyle)style
                              animated: (BOOL)animated
    {
        CATransition* transition = [CATransition animation];
        [transition setDuration: 0.4];
        [transition setTimingFunction: 
         [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionLinear]];//kCAMediaTimingFunctionEaseInEaseOut]];
        [transition setType: kCATransitionReveal];
        [transition setSubtype: kCATransitionFromTop];
        [[[[modalViewController view] superview] layer] addAnimation: transition 
                                                              forKey: nil];
        [[modalViewController view] removeFromSuperview];

        [modalViewController release]; // all done, we can let this go.
    }
    @end

Andere Tipps

Sind Sie Zellen in der Tabellenansicht wiederverwendet? Stellen Sie sicher, wirklich, sie wiederzuverwenden, mit anderen Worten alles tun, um das Setup der Zelle innerhalb des if (Zelle == null) Fall und nur die Daten im gemeinsamen Fall gelten (unter Anwendung sowohl auf die Wiederverwendung und das neu erstellte).

Beachten Sie die Leistung getroffen, dass die Transparenz in einer Zelle haben kann. Oft scheint es, dass man die Dinge transparent machen müssen, aber vielleicht auch nicht, weil UITableViewCell sich der Probleme bewusst ist. Ausschalten Transparenz bei einigen Objekten könnten falsch erscheinen, aber einen Versuch wert, um zu sehen, ob es tatsächlich funktioniert. Der größte Teil der Kosten für eine Zelle Scrollen ist das Compositing, wie die Zelle bewegt, nicht die Schaffung der Zelle zunächst.

Eine andere Sache, tut das Compositing der Ansicht helfen können, die Sie für Ihr Handy eher im Voraus gelten als das Hinzufügen alle Ansichten auf die Zelle, dann wenden Sie nur eine premade Blick auf Ihr Handy.

Wenn Sie tatsächlich Ansichten in den rollier Zellen Animieren Sie können das oder zumindest überdenken müssen einige Vereinfachungen, um es ein wenig weniger belastend auf dem Gerät zu machen.

Sie könnten auch erwägen Matt Gallagher Strategie für die Zell Umgang Annahme -. es hält Ihre cellForRowAtIndexPath in einen langen, bösen Satz von ifs drehen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top