gpt4 book ai didi

ios - 从 JSQMessagesViewController 打开图像

转载 作者:可可西里 更新时间:2023-11-01 06:17:47 26 4
gpt4 key购买 nike

我正在使用 JSQMesssagesViewController构建消息传递应用程序。我现在可以使用它发送图像,但我想点击图像以全屏打开。此功能类似于标准的消息传递应用程序,允许您点击图像“气泡”,然后捏合以放大和缩小。有没有人有过使用 JSQMessagesViewController 做这件事的经验?感谢那些可以提供帮助的人!

最佳答案

SWIFT 3:我找到了另一种不使用任何其他 pod/库的方法。

1) 在您的 ChatViewController 上添加 var selectedImage: UIImage?

2)重写方法didTapMessageBubbleAt,例如:

override func collectionView(_ collectionView: JSQMessagesCollectionView!, didTapMessageBubbleAt indexPath: IndexPath!) {
if let test = self.getImage(indexPath: indexPath) {
selectedImage = test
self.performSegue(withIdentifier: "showMedia", sender: self)
}
}

3) 添加这个函数,当用户点击图片时,获取图片并返回一个UIImage(如果是被录音的短信,则返回nil):

func getImage(indexPath: IndexPath) -> UIImage? {
let message = self.messages[indexPath.row]
if message.isMediaMessage == true {
let mediaItem = message.media
if mediaItem is JSQPhotoMediaItem {
let photoItem = mediaItem as! JSQPhotoMediaItem
if let test: UIImage = photoItem.image {
let image = test
return image
}
}
}
return nil
}

4) 添加segue:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showMedia" {
if let pageDeDestination = segue.destination as? ShowMediaViewController {
pageDeDestination.image = selectedImage!
} else {
print("type destination not ok")
}
} else {
print("segue inexistant")
}
}

5) 在 Interface Builder 中,在您的 chatVC 附近添加一个 View controller,并添加一个带有 showMedia 作为 segue(类型 Show) segue 标识符。在新的 viewcontroller 中添加 ImageView 。

6) 这是我的 ShowMediaViewController 的代码:

class ShowMediaViewController: UIViewController {
var image: UIImage? = nil
var titreText: String!

@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var titre: UILabel!


override func viewDidLoad() {
super.viewDidLoad()

//titre.text = titreText

if image != nil {
imageView.image = image
} else {
print("image not found")
}

// Do any additional setup after loading the view.
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()

// Dispose of any resources that can be recreated.
}
}

不要忘记将“Aspect Fit”作为参数放入 ImageView (在界面构建器中)以正确显示图像。

关于ios - 从 JSQMessagesViewController 打开图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33161006/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com