美文网首页ios实用开发技巧程序员
ios 弹幕效果实现过程中,获取弹幕的点击事件

ios 弹幕效果实现过程中,获取弹幕的点击事件

作者: cfxiaoxixi | 来源:发表于2017-12-16 15:47 被阅读34次

         今天心血来潮突然想实现一个弹幕控件,感觉很高大上,是不是。

        其实弹幕控件的实现,主题逻辑很简单,一个主视图,视图右侧随机放置一些label,然后通过平移动画,把label从右边移动到左边去,label从屏幕消失后,移除并且销毁。

        今早尝试了下,很快就把主体功能实现了,后来感觉还可以给弹幕实现点击事件,然后又把点击事件添加上去了。这时,问题就来了,label在移动过程中,一直无法响应点击,userInteractionEnabled也设置为yes了,尝试了很久,添加到label上的手势,就是一直无法触发。后来查找了一些资料,发现是UIView animate的问题,label在执行动画时,与两个图层相关:

1、label.layer.presentationLayer用来显示动画(属性随动画过程慢慢改变);

2、label.layer用来处理用户交互(动画一开始属性值已经改变到动画结束时的状态)。

        这就是为什么label平移时,上面添加的点击手势无法触发的原因。

        解决办法,我是通过touchesBegan来解决点击的,从父视图上获取到触摸点,然后遍历找出触摸到的平移控件,下面贴一段代码:

- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent *)event

{

    UITouch * touch = touches.anyObject;//获取触摸对象

    CGPoint point = [touch  locationInView:self];

    NSArray *subViews = self.subviews;

    for(UIView *subView in subViews){

        if([subView isKindOfClass:[UILabel class]]){ //是要找的label

        CALayer *layer = subView.layer.presentationLayer; //显示层

            if(CGRectContainsPoint(layer.frame, point)){ //触摸点在显示层中,返回label

            }

        }

    }

}

        这就能捕获到触摸的label,贴上项目地址(https://github.com/chenfengxiaoxixi/Barrage.git),有兴趣的可以下载来看看。

相关文章

  • ios 弹幕效果实现过程中,获取弹幕的点击事件

    今天心血来潮突然想实现一个弹幕控件,感觉很高大上,是不是。 其实弹幕控件的实现,主题逻辑很简单,一个主视图...

  • iOS 弹幕效果

    iOS 弹幕效果 iOS 弹幕效果

  • iOS 简单实现按照轨道弹幕效果

    ios 铺满轨道弹幕效果实现 为避免重复造轮子,网上查找了两个弹幕效果 OCBarrage[https://git...

  • Flutter 实现虎牙/斗鱼 弹幕效果

    老孟导读:用Flutter实现弹幕功能,轻松实现虎牙、斗鱼的弹幕效果。 先来一张效果图: 实现原理 弹幕的实现原理...

  • Python实时爬取斗鱼弹幕

    实现目标: 输入斗鱼房间号实时获取弹幕信息,实现效果如下:douyu.gif 逻辑梳理 首先说明下斗鱼是开放了弹幕...

  • iOS 弹幕开发过程碰到的问题总结

    需求:实现一个弹幕容器,里面同时会有多行互不重叠的、运动中的弹幕 。每一条弹幕均需要支持点击事件。 用脚底板想的方...

  • iOS 弹幕效果

    项目中视频直播有个弹幕功能,网上也有很多弹幕的demo,之前忙于项目进度,没有细致研究其中是如何实现的。如今闲暇之...

  • Canvas弹幕实现

    anvas原生实现直播视频弹幕效果。 原文链接 上一篇中用动态创建DOM元素实现弹幕效果,好处是可以在DOM元素上...

  • 使用transition实现弹幕滚动效果

    想要实现比较理想的弹幕滚动效果还是有一定难度的。这里以vue为基础,讲一种实现弹幕滚动的方法,不考虑重叠,弹幕过长...

  • Flutter 实现虎牙/斗鱼 弹幕效果

    先来一张效果图: 实现原理 弹幕的实现原理非常简单,即将一条弹幕从左侧平移到右侧,当然我们要计算弹幕垂直方向上的偏...

网友评论

  • PGOne爱吃饺子:楼主还是没有明白你的解释啊??为啥不能被点击
    PGOne爱吃饺子:@cfxiaoxixi 看到的是layer的移动的话,layer不是用于交互的么? 为啥还不能点击呢
    PGOne爱吃饺子:@cfxiaoxixi 好的 谢谢
    cfxiaoxixi:@PGOne爱吃饺子 额,因为动画过程中你看到的是layer的移动,想具体了解你可以去查看隐式和显式动画原理
  • 6f6db076b0b7:   ٩(๑^o^๑)۶
    cfxiaoxixi:@雾中雨_109d :smirk:

本文标题:ios 弹幕效果实现过程中,获取弹幕的点击事件

本文链接:https://www.haomeiwen.com/subject/gsbswxtx.html