假设您有一个图像的上下文菜单,该菜单在长时间按下时会弹出。如何才能使弹出窗口变大,但保持相同的维度?
ViewControllerTableViewCell: UITableViewCell, UIContextMenuInteractionDelegate {
func contextMenuInteraction(_ interaction: UIContextMenuInteraction, configurationForMenuAtLocation location: CGPoint) -> UIContextMenuConfiguration? {
UIContextMenuConfiguration(identifier: nil, previewProvider: nil) { _ in
let share = UIAction(title: "", image: UIImage(systemName: "")) { _ in
// share code
}
return UIMenu(title: "", children: [share])
}
}
override func awakeFromNib() {
super.awakeFromNib()
immy.isUserInteractionEnabled = true
immy.addInteraction(UIContextMenuInteraction(delegate: self))
}
发布于 2020-07-16 03:49:05
您可以为上下文菜单提供自己的previewProvider。只需创建一个具有图像视图的自定义视图控制器,用于预览所需大小的图像:
import UIKit
class ImagePreviewController: UIViewController {
private let imageView = UIImageView()
init(image: UIImage) {
super.init(nibName: nil, bundle: nil)
preferredContentSize = image.size
imageView.contentMode = .scaleAspectFill
imageView.clipsToBounds = true
imageView.image = image
view = imageView
}
required init?(coder: NSCoder) {
super.init(coder: coder)
}
}
然后,只需将自定义预览提供程序实现添加到UIContextMenuConfiguration
初始化程序:
func contextMenuInteraction(_ interaction: UIContextMenuInteraction, configurationForMenuAtLocation location: CGPoint) -> UIContextMenuConfiguration? {
UIContextMenuConfiguration(identifier: nil) {
ImagePreviewController(image: self.immy.image!)
} actionProvider: { _ in
let share = UIAction(title: "Share", image: UIImage(systemName: "square.and.arrow.up")) { _ in
// share code
}
return UIMenu(title: "Profile Picture Menu", children: [share])
}
}
编辑/更新:
不采取任何行动
func contextMenuInteraction(_ interaction: UIContextMenuInteraction, configurationForMenuAtLocation location: CGPoint) -> UIContextMenuConfiguration? {
UIContextMenuConfiguration(identifier: nil, previewProvider: {
ImagePreviewController(image: self.immy.image!)
})
}
https://stackoverflow.com/questions/62925459
复制相似问题