recherche

Maison  >  Questions et réponses  >  le corps du texte

objective-c - Comment ajuster la taille de l'image affichée lors du chargement d'une image réseau depuis SDWebImage

Comme le montre l'image : ceci est une capture d'écran d'un téléphone mobile 6s. Je l'ai mis dans un UIImageView avec une largeur = largeur de l'écran du téléphone portable et une hauteur de 210. Cette image est obtenue grâce au chargement du réseau. Ici, j'utilise SDWebImage. Maintenant, je veux que l'image soit meilleure, mon idée est de recadrer cette image. Le problème est que la requête réseau ici est asynchrone. Je ne sais pas où le gérer.

Mon principal problème est que je ne sais pas où recadrer l'image Web chargée en fonction de SDWebImage après son chargement.

Je souhaite que les images en ligne s'affichent comme suit : J'ai déjà le code pour la partie recadrage. Je ne sais tout simplement pas où le modifier.

滿天的星座滿天的星座2798 Il y a quelques jours851

répondre à tous(1)je répondrai

  • 淡淡烟草味

    淡淡烟草味2017-05-02 09:31:09

    Utilisez l'option de téléchargement SDWebImageAvoidAutoSetImage, coupez en arrière-plan une fois le téléchargement terminé, puis définissez l'image dans le fil de discussion principal et appelez l'actualisation.
    Vous pouvez écrire une catégorie pour UIImageView pour un appel facile.

    UIImageView *imageView;
    
        __weak __typeof(&*imageView) weakImageView = imageView;
        [imageView sd_setImageWithURL:url
                     placeholderImage:placeholder
                              options:SDWebImageAvoidAutoSetImage // 下载完成后不要自动设置image
                            completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
                image = [image croppedImage:...]; // 后台线程剪裁图片
    
                dispatch_async(dispatch_get_main_queue(), ^{
                    __typeof(&*weakImageView) strongImageView = weakImageView;
                    if (strongImageView) {
                        strongImageView.image = image;
                        [strongImageView setNeedsLayout];
                    }
                });
            });
        }];

    répondre
    0
  • Annulerrépondre