美文网首页
多个imageNamed:方法导致UI加载卡顿解决方案:

多个imageNamed:方法导致UI加载卡顿解决方案:

作者: 岁月如歌的季节 | 来源:发表于2019-01-24 11:19 被阅读5次

    使用场景:

    当表情键盘使用for循环借助UI控件imageNamed:方法赋值图片的时候界面滑动初次加载时候出现卡顿

    表情键盘

    解决方案:

    - (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的代码,需要在响应文档的.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;
        }
    

    相关文章

      网友评论

          本文标题:多个imageNamed:方法导致UI加载卡顿解决方案:

          本文链接:https://www.haomeiwen.com/subject/sdtyjqtx.html