从Swift中的UITargetedPreview中删除背景视图
我正在尝试删除我的从Swift中的UITargetedPreview中删除背景视图,swift,xcode,Swift,Xcode,我正在尝试删除我的UITargetView的背景视图。我把背景颜色弄清楚了,但是,你仍然可以看到背景的框架 这就是它目前的样子: 我目前有一个视图,其中包含文本容器和图像,这就是我用作UITargetedPreview视图的内容 有没有办法只显示图像和文本而不显示背景框?您是否尝试过将UIView子类化为UIControl? 我有一个类似的问题,但在我的例子中,UITargetedPreview的视图有问题。但是,将UIView更改为UIControl修复了所有问题。尝试删除该背景视图的阴影。
UITargetView
的背景视图。我把背景颜色弄清楚了,但是,你仍然可以看到背景的框架
这就是它目前的样子:
我目前有一个视图,其中包含文本容器和图像,这就是我用作UITargetedPreview
视图的内容
有没有办法只显示图像和文本而不显示背景框?您是否尝试过将UIView子类化为UIControl?
我有一个类似的问题,但在我的例子中,UITargetedPreview的视图有问题。但是,将UIView更改为UIControl修复了所有问题。尝试删除该背景视图的阴影。隐藏阴影有一种棘手的方法,为此,您应该在视图层次结构中找到一个具有
\u UIPlatterSoftShadowView
类名的视图,然后将其隐藏
func viewByClassName(视图:UIView,类名:String)->UIView?{
让name=NSStringFromClass(类型(of:view))
如果name==className{
返回视图
}
否则{
用于视图中的子视图。子视图{
如果let view=viewByClassName(视图:子视图,类名:类名){
返回视图
}
}
}
归零
}
重写func tableView(tableView:UITableView,willDisplayContextMenu配置:UIContextMenuConfiguration,animator:UIContextMenuInteractionAnimating?){
DispatchQueue.main.async{
如果let window=UIApplication.shared.delegate?.window{
如果let view=self.viewByClassName(视图:窗口,类名:“\u UIPlatterSoftShadowView”){
view.ishiden=true
}
}
}
}
注意:它不是文档化的内部类,可以随时更改,但现在在ios 13/14上都可以使用。在显示目标视图之前,您需要研究UIBezierPath()以勾勒出要包含的特定区域 之后,您应将特定路径指定给阴影路径/可见路径
let params = UIPreviewParameters()
params.backgroundColor = .clear
if #available(iOS 14.0, *) {
params.shadowPath = bubblePath
} else {
params.visiblePath = bubblePath
}
如果您将目标预览框更改为仅包含消息而不包含用户图标,则应该可以。您可以共享所需结果的模型吗?是否希望阴影仅位于图像后面?另外,考虑发送图像后再发送另一条消息,即文本。比如iMessage的工作原理。嗨,你能提供更多的代码吗?谢谢您不需要为此编写代码,只需在情节提要上选择您用作UITargetedPreview的视图,然后将类更改为uicontrol我刚刚尝试过,不再工作,ios 14.4您有什么解决方案吗?谢谢你,不工作,布罗希,可以。你能帮我解决问题吗