gpt4 book ai didi

ios - 从顶部(如下拉菜单)隐藏的动画 TableView

转载 作者:行者123 更新时间:2023-11-29 00:58:01 26 4
gpt4 key购买 nike

只要按下我的下拉菜单,它就会切换,但是 View 只会出现(因为它是隐藏的)。我如何让它从选中的下拉列表中下来,并返回到未选中的下拉列表中。我已经尝试了一些过渡,但我什么都做不了。我希望它看起来像一个下拉菜单。

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

最佳答案

实现的方法是使用动画(UIViewAnimations)。因此,在显示任何内容之前,您将隐藏 View 设置在可见 View 框架之上。并在您希望显示框架时动画到可视框架。

当您第一次加载 View 时,您设置隐藏的框架(我使用偏移量)以及显示时的框架。然后在出现之前将您的 View 设置为隐藏框架,这样当用户第一次看到主视图时它就不会显示。

然后当你想显示它时,你可以将它设置为带有动画的显示帧,反之则隐藏它。

一个好主意是制作一个属性的 setter ,您可以在设置发生之前拦截它...

然后,要显示菜单 View ,您可以执行以下操作:

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

关于ios - 从顶部(如下拉菜单)隐藏的动画 TableView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37417517/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com