使用場(chǎng)景:
當(dāng)表情鍵盤使用for循環(huán)借助UI控件imageNamed:方法賦值圖片的時(shí)候界面滑動(dòng)初次加載時(shí)候出現(xiàn)卡頓
表情鍵盤
解決方案:
- (void)decodedImageWithImageName:(NSString *)imageName block:(void(^)(UIImage *image))block {
dispatch_async(dispatch_get_global_queue(0, 0), ^{
@autoreleasepool{
UIImage *image = [[UIImage imageNamed:imageName] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
image = [UIImage decodedImageWithImage:image];
dispatch_async(dispatch_get_main_queue(), ^{
if(block) {
block(image);
}
});
}
});
}
其中decodedImageWithImage:
為SDWebImage
的代碼,需要在響應(yīng)文檔的.m中#import "SDWebImageDecoder.h"
使用案例:
for (int i = 0; i < faceData.count; i++) {
FaceModel *fm = faceData[i];
FaceButton *btn = self.buttons[i];
btn.hidden = NO;
// [btn setImage:[UIImage imageNamed:fm.faceIcon] forState:UIControlStateNormal];
[self decodedImageWithImageName:fm.faceIcon block:^(UIImage *image) {
[btn setImage:image forState:UIControlStateNormal];
}];
btn.faceTitle = fm.faceTitle;
}