【问题标题】:How to load image from url in JSQMessagesviewController IOS如何在 JSQMessagesviewController IOS 中从 url 加载图像
【发布时间】:2017-01-10 13:39:11
【问题描述】:

我正在使用 JSQMessagesViewController 来显示聊天 UI。如何在聊天屏幕中显示来自 url 的图像?我已经浏览了 github 和 stackoverflow,但没有正确获得我们需要的内容?

我通过的相关链接是 https://github.com/jessesquires/JSQMessagesViewController/issues/476

https://github.com/jessesquires/JSQMessagesViewController/issues/582

欢迎提出意见

【问题讨论】:

    标签: ios ios7 uikit chat jsqmessagesviewcontroller


    【解决方案1】:

    试试,

     ZSSMessagesAvatarImage *avatarImage = [self.avatars objectForKey:message.senderId];
    if (avatarImage.url) {
    
        [cell.avatarImageView setImageWithURLRequest:[NSURLRequest requestWithURL:avatarImage.url] placeholderImage:nil success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
    
            cell.avatarImageView.image = image;
    
        } failure:nil];
    
    }
    cell.avatarImageView.clipsToBounds = YES;
    cell.avatarImageView.layer.cornerRadius = 22;
    cell.avatarImageView.hidden = NO;
    

    参考:https://github.com/jessesquires/JSQMessagesViewController/issues/1302

     if(object[PF_CHAT_PICTURE])
    {
    UIImageView *imageView = [[UIImageView alloc] init];
    NSString *imgUrl = [object[PF_CHAT_PICTURE] valueForKey:@"url"];
    
    UIImage *image = [[SDImageCache sharedImageCache] imageFromDiskCacheForKey:imgUrl];
    if(image == nil)
    {
        NSURL *imageUrl = [NSURL URLWithString:imgUrl];
    
        [imageView setImageWithURL:imageUrl completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType)
        {
            JSQPhotoMediaItem *mediaItem = [[JSQPhotoMediaItem alloc] initWithImage:image];
            JSQMessage *message = [[JSQMessage alloc] initWithSenderId:user.objectId senderDisplayName:user[PF_USER_FULLNAME] date:object.createdAt media:mediaItem];
            [messages addObject:message];
        }];
    }
    else
    {
        JSQPhotoMediaItem *mediaItem = [[JSQPhotoMediaItem alloc] initWithImage:image];
        message = [[JSQMessage alloc] initWithSenderId:user.objectId senderDisplayName:user[PF_USER_FULLNAME] date:object.createdAt media:mediaItem];
    }
    }
    else
    {
    message = [[JSQMessage alloc] initWithSenderId:user.objectId senderDisplayName:user[PF_USER_FULLNAME] date:object.createdAt text:object[PF_CHAT_TEXT]];
    }
    

    参考:How to send Pictures using JSQMessagesViewController?

    【讨论】:

      【解决方案2】:

      Swift 4 上的解决方案

      您可以使用库“SDWebImage”

      写入方法:
      func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell

      cell.avatarImageView.sd_setImage(with: URL(string: "YOUR_URL"))
      cell.avatarImageView.sd_setShowActivityIndicatorView(true)
      

      【讨论】:

      • 不要忘记将单元格转换为 JSQMessagesCollectionViewCell
      猜你喜欢
      • 2012-06-13
      • 1970-01-01
      • 2014-05-06
      • 1970-01-01
      • 1970-01-01
      • 2016-03-04
      • 1970-01-01
      • 2016-11-22
      • 1970-01-01
      相关资源
      最近更新 更多