最近公司项目要做个文字跑马灯控件,提示客户服务已经到期了。
拿到需求,上去就是干。一番调研加操作,跑马灯完成了。这时候需要加个删除的方法,便于用户看完提示后删除。就在跑马灯控件上面加了一个UIImageView,添加了单击手势,始终不起作用。一番查找才发现:
其中最关键的地方在于,动画开始后有两个图层:
一个view.layer.presentationLayer用来显示动画(属性随动画过程慢慢改变);
一个view.layer用来处理用户交互(动画一开始属性值已经改变到动画结束时的状态)
在移动过程响应触摸,要注意以下几个地方:
1.userInteractionEnabled属性设为YES。UIView默认为YES,但是UIImageView,UILabel等重写后默认为NO
2:执行动画时 options添加UIViewAnimationOptionAllowUserInteraction 打开用户交互
[UIView animateWithDuration:20
delay:0
options:UIViewAnimationOptionAllowUserInteraction|
UIViewAnimationOptionCurveLinear
animations:^{
imgView.frame = CGRectMake(100, 100, 100, 100);
}
completion:NULL
];