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
Stellen Sie Ihre Drop-Down-Rahmen über Bildschirm zu sein und mit [UIView animateWithDuration] beleben des Drop-Down-Rahmen – stefos
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
Ja stefos - Ich tat, was Sie sagten, der Code sieht zwar nicht gut aus, aber es funktioniert, danke! –