iOS -如何在UIView中使用水平滑动/淡出淡出?



在iOS中是否有一种方法可以在UIView(特别是UILabel)上运行一个淡出动画,它会随着滑动动作淡出(所以如果它中途暂停,左边是可见的,右边不可见,中间有一些渐变)

我想知道是否有一个渐变蒙版,我可以使用Alpha通道?

对于实现这种揭示有什么想法或代码片段吗?垂直或水平

(链接到同样的问题,但Android的参考- Android -如何在一个视图中淡出与水平滑动/淡出?)

简单的解决方案是在标签的顶部添加额外的视图。你能做的是创建这个视图并让它通过X轴或Y轴移动。但是,您还需要做两件事

  1. 简单的滑动手势将触发动画
  2. 平移手势,它将随着手势的移动移动视图。(也许如果你拖动超过50%的标签宽度/高度来触发其余的动画。)

如果你在背景色中添加渐变,动画效果会更好。

也许这不是你问题的确切答案,但它已经足够好了。

另外,你可以像这样跟踪你的平移手势

@objc private func didPan(_ sender: UIPanGestureRecognizer) {
switch sender.state {
case .began:
//dispalay view
case .changed:
let translation = sender.translation(in: view)
//move view by x or y
case .ended,
.cancelled:
//finish animation or reverted
}
default:
break
}
}

你应该有这样的观点父视图-这个视图将裁剪子视图的边界标签——这是你的标签,它在父元素中动画视图-它在父视图中,并且在动画开始时超出了它的边界。

最新更新