Ios 如何创建什么样的应用程序预览动画?
我想知道如何制作像WhatsApp这样的预览,这是演示: 似乎它不是偷看和弹出,因为我们只需要做长按,然后它就会显示出来 注意:如果您没有安装WhatsApp,您可以在本机iOS消息应用程序上进行测试,它们具有相同的动画 感谢这是支持iOS13以后版本的UIContextMenuConfiguration 长按tableViewCell可以看到预览和菜单。可以将任何viewController或任何customView显示为菜单的预览组件 我已将viewController显示为预览Ios 如何创建什么样的应用程序预览动画?,ios,swift,Ios,Swift,我想知道如何制作像WhatsApp这样的预览,这是演示: 似乎它不是偷看和弹出,因为我们只需要做长按,然后它就会显示出来 注意:如果您没有安装WhatsApp,您可以在本机iOS消息应用程序上进行测试,它们具有相同的动画 感谢这是支持iOS13以后版本的UIContextMenuConfiguration 长按tableViewCell可以看到预览和菜单。可以将任何viewController或任何customView显示为菜单的预览组件 我已将viewController显示为预览 // Ma
// MainViewController is first ViewController and DetailsViewController is second ViewController
class MainViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
var castNameArr = ["Professor", "Berlin", "Nairobi", "Tokiyo", "Rio", "Denver", "Mosco", "Requel", "Helsinki", "Arturo"]
var selectedCast = ""
var detailVc = DetailsViewController()
override func viewDidLoad() {
super.viewDidLoad()
title = "Money Heist Casts"
detailVc = self.storyboard?.instantiateViewController(withIdentifier: "DetailsViewController") as! DetailsViewController
}
}
使用tableView的ContextMenuConfiguration for Rowat方法,我们可以创建菜单和预览
func tableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? {
selectedCast = castNameArr[indexPath.row]
let identifier = "\(indexPath.row)" as NSString
return UIContextMenuConfiguration(
identifier: identifier,
previewProvider: makePreview) { _ in
let optionOne = UIAction(
title: "Option 1",
image: UIImage(systemName: "arrowshape.turn.up.right")){ _ in
//This will get called when you tap on Option 1
}
let optionTwo = UIAction(
title: "Option 2",
image: UIImage(systemName: "book.fill")){ _ in
//This will get called when you tap on Option 2
}
return UIMenu(title: "", image: nil, children: [optionOne, optionTwo])
}
}
// This will return a viewController which we want to display as preview
func makePreview() -> UIViewController {
detailVc.castNameStr = selectedCast
return detailVc
}
当交互即将提交以响应用户点击预览时,将调用使用WillPerformReviewActionFormEnuWith方法
func tableView(_ tableView: UITableView, willPerformPreviewActionForMenuWith configuration: UIContextMenuConfiguration, animator: UIContextMenuInteractionCommitAnimating) {
DispatchQueue.main.async {
print(configuration.identifier as? String)
self.navigationController?.pushViewController(self.detailVc, animated: true)
}
}
这是显示为预览的DetailsViewController
class DetailsViewController: UIViewController {
@IBOutlet weak var titleLbl: UILabel!
@IBOutlet weak var castImgView: UIImageView!
var castNameStr = ""
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillAppear(_ animated: Bool) {
titleLbl.text = "This is \(castNameStr)"
castImgView.image = UIImage(named: castNameStr)
}
从下载演示
有关更多详细信息,请查看此处
这叫做UIContextMenuConfiguration。谢谢,这正是我的意思。我只是不知道该怎么称呼它:-DGreat,谢谢你提供了一个非常详细和正确的答案:-Dcan u仔细检查我的问题:,谢谢