iOS - 如何通过水平滑动/淡入淡出淡入 UIView?

时间:2021-02-15 15:21:00

标签: ios animation fade

iOS 中是否有一种方法可以在 UIView(特别是 UILabel)上运行淡入淡出动画,该动画将通过滑动动作淡入淡出(因此,如果它中途暂停,则左侧可见,右侧不可见,中间有一些渐变之间)。

我想知道是否有可以与 Alpha 通道一起使用的渐变蒙版?

实现这种揭示的任何想法或代码片段?垂直或水平。

(链接到同一问题,但供 Android 参考 - Android - How to fade in a View with a horizontal swipe/fade?

1 个答案:

答案 0 :(得分:0)

简单的 hacky 解决方案将带有可以放置在标签顶部的附加视图。您可以这样做的方法是创建此视图并通过 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
}
}

你应该有这样的看法 父视图 - 此视图将在其边界内剪辑子视图 标签 - 这是你的标签,它在父标签中 动画视图 - 它在父视图中,它在动画开始的边界之外。