2016-05-24 5 views
0

Dies wird umgeschaltet, wenn meine Dropdown-Taste gedrückt wird, aber die Ansicht erscheint nur (weil es ausgeblendet ist). Wie mache ich es aus dem Drop-down-Menü ausgewählt und gehe zurück in das Dropdown-Menü auf nicht ausgewählt. Ich habe ein paar Übergänge ausprobiert, aber ich kann nichts zur Arbeit bringen. Ich möchte, dass es wie ein Drop-down aussieht.animate tableview von oben (wie ein Dropdown) auf versteckte

-(void)addSubviewOvertop:(BOOL)selected 
{ 
    dropDownTableView.hidden = !selected; 
} 
+0

Stellen Sie Ihre Drop-Down-Rahmen über Bildschirm zu sein und mit [UIView animateWithDuration] beleben des Drop-Down-Rahmen – stefos

+0

Sie. könnte versuchen, eine NSLayoutConstraint für die Höhe der Tabelle hinzufügen und Animieren Einstellung eine Konstante, die Ihren Bedürfnissen entspricht – hacker2007

+0

Ja stefos - Ich tat, was Sie sagten, der Code sieht zwar nicht gut aus, aber es funktioniert, danke! –

Antwort

1

Der Weg ist es, Animationen (UIViewAnimations) zu verwenden. Sie legen also Ihre versteckte Ansicht über dem sichtbaren Ansichtsrahmen fest, bevor Sie etwas anzeigen. Und animiert zum sichtbaren Rahmen, wenn Sie den Rahmen zeigen möchten.

Wenn Sie die Ansicht zum ersten Mal laden, stellen Sie Ihre versteckten Frames ein (ich verwende Offsets) und auch Ihre Frames, wenn sie angezeigt werden. Und bevor Sie erscheinen, stellen Sie Ihre Sicht auf den versteckten Rahmen ein, so dass sie nicht angezeigt wird, wenn der Benutzer die Hauptansicht zum ersten Mal sieht.

Dann, wenn Sie es zeigen möchten, stellen Sie es auf den angezeigten Rahmen mit einer Animation und umgekehrt, um es zu verbergen.

Eine gute Idee, einen Setter einer Immobilie zu machen, in dem Sie den Satz abfangen kann, bevor es passiert ...

Dann die Menüansicht zu zeigen, können Sie so etwas wie:

self.menuShowed = YES; 

Beachten Sie, dass Sie selbst verwenden müssen. Wenn Sie _menuShowed verwenden, wird der iVar gesetzt, aber der Setter wird nicht ausgelöst.

Ungeprüfte Code Idee (vorausgesetzt, dass Sie ein angeschlossenes haben und instanziiert UIView (Menü-Am) genannt Menü-Am.

@interface ViewController() 
@property (nonatomic, strong) UIView *menuView; 
@property (nonatomic) CGRect hiddenFrame; 
@property (nonatomic) CGRect showedFrame; 
@property (nonatomic) BOOL menuShowed; 

@end 

@implementation ViewController 

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    self.hiddenFrame = CGRectOffset(self.menuView.frame, 0 - self.menuView.frame.size.height, 0); 
    self.showedFrame = CGRectOffset(self.menuView.frame, self.menuView.frame.size.height, 0); 

    _menuShowed = NO; 
    self.menuView.frame = self.hiddenFrame; 
} 

- (void)setMenuShowed:(BOOL)menuShowed 
{ 
    if (menuShowed) { 
     [UIView animateWithDuration:0.7 animations:^{ 
      self.menuView.frame = self.showedFrame; 
     }]; 
    } else { 
     [UIView animateWithDuration:0.7 animations:^{ 
      self.menuView.frame = self.hiddenFrame; 
     }]; 
    } 

    _menuShowed = menuShowed; 
} 

@end 
Verwandte Themen