我可以向不在集合视图或表格视图中的单张照片添加 3d 触控吗?我似乎在它上面看到的一切都使用了集合视图。
我有一张图片显示在带有信息的视图上,但图片是一个小方块,我拥有它,以便我可以点击照片并在视图控制器中打开它,但我想向它添加窥视。
是的,您需要做的就是符合UIViewControllerPreviewingDelegate. 当一个深压被注册时
func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController?
Run Code Online (Sandbox Code Playgroud)
方法将被调用。如果您返回一个非 nil 视图控制器,将启动一个 peek 和 pop 交互。
例如,这里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)
}
}
Run Code Online (Sandbox Code Playgroud)
OtherViewController具有占据整个视图的图像视图的视图控制器在哪里。
这给出了以下结果:
| 归档时间: |
|
| 查看次数: |
1160 次 |
| 最近记录: |