JSQMessage показать изображение в сообщении

как можно сделать, чтобы показать полное изображение в пузырьковом сообщении.

Я показываю изображение, но оно вырезано:

см. изображение

благодарю вас


person Paolo Gdf    schedule 05.02.2016    source источник
comment
Как ты загрузил картинку? исходник на гитхабе?   -  person Sauron    schedule 22.08.2016


Ответы (2)


Я не верю, что существует функция, которую можно переопределить, чтобы получить желаемый результат. Но с другой стороны, если вы хотите разветвить JSQMessageViewController и изменить его самостоятельно. Если вы перейдете к исходному проекту, перейдите к jSQMessages/JSQMessagesViewController/Model/JSQPhotoMediaItem.m в mediaView, начиная со строки 74.

if (self.cachedImageView == nil) {
    CGSize size = [self mediaViewDisplaySize];
    UIImageView *imageView = [[UIImageView alloc] initWithImage:self.image];
    imageView.frame = CGRectMake(0.0f, 0.0f, size.width, size.height);
    imageView.contentMode = UIViewContentModeScaleToFill;
    imageView.clipsToBounds = YES;
    [JSQMessagesMediaViewBubbleImageMasker applyBubbleImageMaskToMediaView:imageView isOutgoing:self.appliesMediaViewMaskAsOutgoing];
    self.cachedImageView = imageView;
}

если вы измените строку 78 imageView.contentMode = UIViewContentModeScaleAspectFit; на imageView.contentMode = UIViewContentModeScaleToFill;, если вы добавите imageView.backgroundColor = [UIColor lightGrayColor];, у вас также будет форма пузыря. Вот несколько снимков экрана до и после.

Перед изменением кода

После изменения кода

person Dan Leonard    schedule 08.02.2016

хорошо, вот мой код:

override func viewDidLoad() {
        super.viewDidLoad()



    self.collectionView?.collectionViewLayout.outgoingAvatarViewSize = CGSizeZero

    self.collectionView?.collectionViewLayout.incomingAvatarViewSize = CGSizeZero

    self.inputToolbar?.contentView?.rightBarButtonItemWidth = CGFloat(34.0)

    self.inputToolbar?.contentView?.rightBarButtonItem?.setTitle("Invia", forState: .Normal)

    self.inputToolbar?.contentView?.textView!.placeHolder = "messaggio.."

    setUpMessages()



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


override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {

    return self.messages.count
}



override func collectionView(collectionView: JSQMessagesCollectionView!, messageDataForItemAtIndexPath indexPath: NSIndexPath!) -> JSQMessageData! {



    return self.messages[indexPath.item]
}

override func collectionView(collectionView: JSQMessagesCollectionView!, messageBubbleImageDataForItemAtIndexPath indexPath: NSIndexPath!) -> JSQMessageBubbleImageDataSource! {

    let factory = JSQMessagesBubbleImageFactory()

    if messages[indexPath.row].senderId == senderId {
       return factory.outgoingMessagesBubbleImageWithColor(UIColor.lightGrayColor())
    } else {
       return factory.incomingMessagesBubbleImageWithColor(UIColor.greenColor())
    }

}



override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
    let cell = super.collectionView(collectionView, cellForItemAtIndexPath: indexPath)
    let message = self.messages[indexPath.row]

    return cell
}

override func collectionView(collectionView: JSQMessagesCollectionView!, avatarImageDataForItemAtIndexPath indexPath: NSIndexPath!) -> JSQMessageAvatarImageDataSource! {

    return nil
}

func setUpMessages() {

//load text messages:

    let mes1: JSQMessage = JSQMessage(senderId: "10", displayName: "io10", text: "Ciao")
    let mes2: JSQMessage = JSQMessage(senderId: "10", displayName: "io10", text: "Ciao2")
    let mes3: JSQMessage = JSQMessage(senderId: "10", displayName: "io10", text: "Ciao3")
    let mes4: JSQMessage = JSQMessage(senderId: "10", displayName: "io10", text: "Ciao4")

    messages.append(mes1)
    messages.append(mes2)
    messages.append(mes3)
    messages.append(mes4)

//load image message

   let img2 = JSQPhotoMediaItem(image: UIImage (named: "default"))

   let mes5 = JSQMessage(senderId: "10", senderDisplayName: "io10", media: img2)

    messages.append(mes5)        


}
person Paolo Gdf    schedule 06.02.2016
comment
Именно то, что мне нужно, я был увлечен документами и синтаксисом Ocj-C. - person Sauron; 22.08.2016