gpt4 book ai didi

ios - 仅为 UIImageView 的一部分设置 alpha 值

转载 作者:行者123 更新时间:2023-11-28 07:49:35 25 4
gpt4 key购买 nike

我已经将 2 个 UIImageView 放在彼此之上。底部的只是一张绿色图像,顶部的是蓝色的。最重要的是我有一个 UIView。这个想法是能够上下拖动 UIView,而不是只看到绿色,UIView 将在其矩形内显示底部图像,蓝色。

This is what it looks like

我在 UIView 中添加了一个 Pan Gesture Recogniser,这样我就可以上下拖动它,效果很好。我试图在互联网上搜索以了解如何仅在 UIView 矩形内更改绿色图像的 alpha,以便它看起来像一个窗口,但没有任何运气。到目前为止,这是我的代码:

import UIKit

class ViewController: UIViewController {

var windowViewOrigin: CGPoint!

@IBOutlet weak var topImageView: UIImageView!
@IBOutlet weak var bottomImageView: UIImageView!
@IBOutlet weak var windowView: UIView!

override func viewDidLoad() {
super.viewDidLoad()

addPanGesture(view: windowView)
windowViewOrigin = windowView.frame.origin
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}

func addPanGesture(view: UIView){
let pan = UIPanGestureRecognizer(target: self, action: #selector(ViewController.handlePan(sender:)))
view.addGestureRecognizer(pan)
}

@objc func handlePan(sender: UIPanGestureRecognizer){
let window = sender.view!
let translation = sender.translation(in: view)

switch sender.state {
case .began, .changed :
windowView.center = CGPoint(x: UIScreen.main.bounds.size.width*0.5, y: window.center.y + translation.y)
sender.setTranslation(CGPoint.zero, in: view)
break
case .ended:
UIView.animate(withDuration: 0.5) {
self.topImageView.alpha = 0.0
}
break
default:
break
}
}
}

我希望有人能在正确的方向上帮助我,我不知道如何从这一点继续前进。

最佳答案

这听起来像是将 CAShapeLayer 作为顶部 ImageView 层上的 mask 的工作。

(在 iOS 中, View 实际上是 Core Animation Layers 的薄包装器,它们进行实际的绘制。

您可以创建一个定义形状的 CAShapeLayer 并将其安装为 ImageView 层的 mask 层。然后 mask 的不透明部分使您的 ImageView 可见,但 mask 的透明部分隐藏了 mask 的那些部分。您可以移动蒙版的原点以响应平移手势以移动蒙版区域。

我建议搜索 CAShapeLayer 和 mask 。网上有很多教程。 (我已经有一段时间没有弄乱形状层和 mask 了,当我这样做时是在 Objective-C 中。我不认为我有任何可以共享的 Swift 代码。)

关于ios - 仅为 UIImageView 的一部分设置 alpha 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50080189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com