使用视图控制器的 TabBar 按钮在框架中添加滑动子视图

Posted

技术标签:

【中文标题】使用视图控制器的 TabBar 按钮在框架中添加滑动子视图【英文标题】:Adding sliding subview in a frame using TabBar button of a View controller 【发布时间】:2014-04-01 06:44:54 【问题描述】:

我在 View Controller 上有一个 Tab-Bar 按钮。当用户按下该按钮时,我想要一个子视图从角落侧边显示指定操作的按钮列表,并在再次按下标签栏按钮时显示子视图应该向后滑动并消失。这个子视图应该显示在主视图的小框架上。我怎样才能完成这项任务?

【问题讨论】:

【参考方案1】:

向该按钮添加自定义操作。 当用户按下按钮时,检查按钮视图的原点是否在主视图的范围内。如果不是,则将其滑入,否则将其滑出。

我可能会这样做:

// 在 vi​​ewDidLoad 上调用这个

-(void)createMenuButton

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];

[button addTarget:self action:@selector(toggleMenu) forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:button];   
self.navigationItem.rightBarButtonItem = item;

// 确保 menuView 属性被添加为 self.view 的子视图

-(void)toggleMenu

if (CGRectContainsPoint(self.view.bounds, self.menuView.frame.origin)) 

    [UIView animateWithDuration:.35
                     animations:^
                         CGRect rect = self.menuView.frame;
                         rect.origin.x -= self.menuView.frame.size.width;
                         self.menuView.frame = rect;
                     ];
 else 

    [UIView animateWithDuration:.35
                     animations:^
                         CGRect rect = self.menuView.frame;
                         rect.origin.x += self.menuView.frame.size.width;
                         self.menuView.frame = rect;
                     ];

希望这会有所帮助:)

【讨论】:

我知道这些东西..但是我怎么能以编程方式做到这一点..你能告诉我这个任务的代码吗? .. 请声明在 -(void)toggleMenu 中使用的变量 menuView 是一个 UIView 属性,它将您提到的按钮保存为子视图,并且是函数中使用的唯一属性。

以上是关于使用视图控制器的 TabBar 按钮在框架中添加滑动子视图的主要内容,如果未能解决你的问题,请参考以下文章

如果在视图控制器中使用 Tabbar,如何设置主视图控制器

如何使用子视图控制器中的按钮单击更改 tabBar 项目标题

导航控制器干扰 TabBar 控制器

为啥我的 TabBar 按钮在我第一次加载视图控制器时被禁用?

带有后退按钮的 Tabbar Controller 到 ViewController

关于在TabBar 中添加按钮,并通过block 或代理在控制器中实现响应