3d触摸单张照片。 iOS,Swift
问题描述:
我可以将3d touch添加到不在集合视图或表格视图中的单张照片吗?我似乎看到的所有内容都使用集合视图。3d触摸单张照片。 iOS,Swift
我有一张图片,显示的信息与视图,但图片是一个小广场我有它,所以我可以点击照片,它在视图控制器中打开,但我想添加偷看它。
答
是的,您所需要做的就是符合UIViewControllerPreviewingDelegate
。当深按是注册
func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController?
方法将被调用。如果您返回非零视图控制器,则会启动窥视和流行音乐交互。
例如,此处为ViewController
作为小型居中图像视图。当视图被3D触摸时,我们可以检查该位置是否在图像视图内。如果是这样,我们可以预览下一个视图控制器:
class ViewController: UIViewController {
@IBOutlet weak var imageView: UIImageView!
override func viewDidLoad()
{
super.viewDidLoad()
if traitCollection.forceTouchCapability == .available
{
registerForPreviewing(with: self, sourceView: view)
}
else
{
print("3D Touch Not Available")
}
}
}
extension ViewController: UIViewControllerPreviewingDelegate
{
func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController?
{
let convertedLocation = view.convert(location, to: imagePhoto)
if imagePhoto.bounds.contains(convertedLocation)
{
// Init the peek view controller, set relevant properties, and return it
let otherViewController = self.storyboard?.instantiateViewController(withIdentifier: "\(OtherViewController.self)") as? OtherViewController
otherViewController?.image = imageView.image
previewingContext.sourceRect = imageView.frame
return otherViewController
}
else
{
return nil
}
}
func previewingContext(_ previewingContext: UIViewControllerPreviewing, commit viewControllerToCommit: UIViewController)
{
// Present or push the view controller
present(viewControllerToCommit, animated: true)
}
}
哪里OtherViewController
是与占据整个视图图像视图视图控制器。
其中给出的结果是:
谢谢你来回答复和时间在这@beyowulf ..香港专业教育学院试图实现这一点,但如何将这一看,如果我的法师被称为imagePhoto。 –
'imagePhoto'是你的'UIImageView'的名字?如果'imagePhoto'是'view'的子视图,那么你可以说'if imagePhoto.frame.contains(location){//创建下一个视图控制器并传递图像} else {return nil; }' – beyowulf
在具有我点击的图片照片的视图中的视图。我已经设置了一个手势,所以我可以点击它,它会去一个新的控制器,以显示图像的所有工作正常。 –