objective-c - SDWebImage加載的網(wǎng)絡(luò)圖片,如何調(diào)整顯示圖片的尺寸
問(wèn)題描述
如圖:這是一張6s的手機(jī)屏幕截圖。我把他放在了一個(gè)寬度=手機(jī)屏幕寬度,高度為210的UIImageView中。這張圖片是通過(guò)網(wǎng)絡(luò)加載獲取的。這里我用的是SDWebImage。我現(xiàn)在希望圖片能顯示得好看些,我的想法是裁剪這張圖片。問(wèn)題是這里的網(wǎng)絡(luò)請(qǐng)求是異步的。我不知道在什么地方處理它。
我的核心問(wèn)題是不知道基于SDWebImage加載的網(wǎng)絡(luò)圖片加載完成后在哪里裁剪它。
我想讓上線的圖片呈現(xiàn)下面的顯示方式:關(guān)于裁剪部分的代碼我已經(jīng)有了。我只是不知道在哪里修改它。
問(wèn)題解答
回答1:使用下載選項(xiàng) SDWebImageAvoidAutoSetImage, 下載完成后在后臺(tái)剪裁,然后在主線程設(shè)置image并調(diào)用刷新??梢越o UIImageView 寫(xiě)個(gè)類(lèi)別方便調(diào)用。
UIImageView *imageView; __weak __typeof(&*imageView) weakImageView = imageView; [imageView sd_setImageWithURL:url placeholderImage:placeholder options:SDWebImageAvoidAutoSetImage // 下載完成后不要自動(dòng)設(shè)置imagecompleted:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{ image = [image croppedImage:...]; // 后臺(tái)線程剪裁圖片 dispatch_async(dispatch_get_main_queue(), ^{__typeof(&*weakImageView) strongImageView = weakImageView;if (strongImageView) { strongImageView.image = image; [strongImageView setNeedsLayout];} });}); }];
