每当按下我的下拉列表时,都会切换,但视图才会出现(因为它是隐藏的)。如何从选定的下拉列表中删除它,然后返回到未选中的下拉列表。我尝试了一些过渡但我无法完成任何工作。我希望它看起来像一个下拉列表。
-(void)addSubviewOvertop:(BOOL)selected
{
dropDownTableView.hidden = !selected;
}
答案 0 :(得分:1)
这样做的方法是使用动画(UIViewAnimations)。因此,在显示任何内容之前,将隐藏视图设置在可见视图框上方。当你想要显示框架时,动画到可视框架。
第一次加载视图时,设置隐藏的帧(我使用偏移)以及显示时的帧。然后在出现之前将您的视图设置为隐藏框架,以便在用户第一次看到主视图时不显示。
然后,当你想要显示它时,你将它设置为带有动画的显示框架,反过来隐藏它。
一个好主意是制作一个属性的setter,你可以在它发生之前拦截它......
然后,要显示菜单视图,您可以执行以下操作:
self.menuShowed = YES;
请注意,您必须使用self。如果使用_menuShowed,它将设置iVar,但不会触发setter。
未经测试的代码构思(假设您有一个名为menuView的连接且实例化的UIView(menuView)。:
@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