Ios SwiftUI图像在透明像素上通过触摸
TL;DR:我想在SwiftUI中重新解决这个经典(在UIKit中解决)问题:如何传递到后面的视图,以及透明部分中的触摸。一些方法:Ios SwiftUI图像在透明像素上通过触摸,ios,swiftui,alpha,hittest,Ios,Swiftui,Alpha,Hittest,TL;DR:我想在SwiftUI中重新解决这个经典(在UIKit中解决)问题:如何传递到后面的视图,以及透明部分中的触摸。一些方法: 确定抽头点的alpha==0 为contentShape() 例如,我希望在橙色图像的透明部分点击,以通过绿色图像。透明区域可能是非连接的,就像这些图像中的“孔” 方法1 @objc func handleTap(_ tgr: UITapGestureRecognizer) { let p = tgr.location(in: self) if
contentShape()
@objc func handleTap(_ tgr: UITapGestureRecognizer) {
let p = tgr.location(in: self)
if pointIsOpaque(p) {
// Handle it now.
} else {
// Pass it through.
}
}
查找pointIsOpaque()
属性在中有详细介绍
UIViewRepresentable
包装
方法2
既有"解决方案",;它带来的挑战和解决的挑战一样多。这是为了提供到View.contentShape()
的路径。对于连接的透明区域,这应该是完美的-但是如何计算路径呢?奇偶规则将有助于简单的断开区域。但是如果透明部分是康托集呢?(JK,但可能很复杂。)
有一些关于计算不透明边界的信息:
对于我的项目,我可以使用
pygame
预先计算边界。但是做透明点击测试似乎更直接。Hmm,我没有得到透明性下降,也没有使用普通的ontapsignate()
或signate(tappsignate())
。我本来希望它能“起作用”,但事实并非如此。在所示的测试应用程序中,橙色视图处理其矩形内的所有点击,即使是在透明部分。你有关于自动跳转的参考资料吗?我将分开contentShape()
方法来回答一个单独的问题。与此同时,我关于透明度测试和tap委托的问题仍然没有解决。我的错误是关于视图,而不是光栅图像。我在下面的帖子中使用了遮罩和ContentShape()
解决了这个问题。我仍然在想,我是否能以某种方式让自动透明度下降。