关键词:播放器工具条 隐藏 ,自动隐藏,单击出现
最近要做一个监控项目,需要用到类似播放器的界面,通常一个播放器都有顶部和底部两个自定义的工具条,顶部工具条一般放“返回”“视频信息(名字)”,底部工具条则是放一些进度条,开始,前进,后退按钮;通常工具条在视频打开后一般停留几秒钟就会自动隐藏,点击屏幕又会弹出,今天要分享的就是如何利用AutoLayout约束条件来隐藏和打开工具条。
我们新建项目后在xib中放置两个工具条设置约束,和父视图的边距都为0,再设置一个高度即可;我们选择靠近底边的约束条件,拉倒.m文件;
接下来我们需要几个属性才能完成工作
@property (nonatomic,assign)NSUInteger tapStaticCount;//屏幕静止没有点击的时间,超过5秒自动隐藏工具栏
@property (nonatomic, strong) NSTimer *globalTimer;//定时器
都是为了计时,在屏幕没有操作5秒后,工具条隐藏。
- (void)viewDidLoad {
[super viewDidLoad];
//时间计数设为0
_tapStaticCount = 0;
//定时器响应globalTimerOut 5秒超时的函数
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
self.globalTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(globalTimerOut:) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] run];
});
}
/**
超过5秒就自动隐藏
*/
- (void)globalTimerOut:(NSTimer *)sender
{
if (++_tapStaticCount >= 5) {
dispatch_async(dispatch_get_main_queue(), ^{
[self hideToolView:YES];
});
}
}
/**
隐藏
@param bHiden 是否隐藏
*/
- (void)hideToolView:(BOOL)bHiden
{
if (bHiden) {
// if (_toolViewBottomConstraint.constant != 0) {
// return;
// }
_bottomViewBotCanstraint.constant = -CGRectGetHeight(_bottomTollView.frame);
_topViewtopCanstraint.constant = -CGRectGetHeight(_topToolView.frame);
} else {
_bottomViewBotCanstraint.constant = 0;
_topViewtopCanstraint.constant = 0;
}
[UIView animateWithDuration:0.25f animations:^{
[self.view layoutIfNeeded];
}];
}
/**
单击手势 隐藏 打开
*/
- (IBAction)singleTap:(id)sender {
_tapStaticCount = 0;
[self hideToolView:_bottomViewBotCanstraint.constant == 0];
}
这里是github的传送门:https://github.com/1002698389/HiddenToolBar