换肤工具类的简单封装

作者: ZhengYaWei | 来源:发表于2017-01-06 09:09 被阅读559次

    代码很少,使用起来很简单,所以这里没有提供源码。
    这是.h文件中的代码,对外提供两个方法,第一个方法可以更改皮肤的主题。第二个方法是设置图片,要想第一个方法生效,在设置需要更换皮肤主题的地方要用这个方法设置图片。第三个方法是设置图片内容的实现,其相关说明见下方(重要)。

    #import <Foundation/Foundation.h>
    #import <UIKit/UIKit.h>
    
    @interface ZWSkinTool : NSObject
    
    
    +(void)setSkinColor:(NSString *)skinColor;
    
    + (UIImage *)skinToolWithImageNamed:(NSString *)imageName;
    @end
    

    再看一下.m文件中的代码,这里总共有三个方法,第一个方法是系统方法,只要通过类方法创建对象就会调用该方法,这个方法里面主要做一些初始化操作。第二个方法是更改主题皮肤的实现。

    #import "ZWSkinTool.h"
    @implementation ZWSkinTool
    static NSString * _skinColor;
    
    //类方法的初始化方法  调用类方法的时候会调用这里面的方法
    + (void)initialize{
             _skinColor = [[NSUserDefaults standardUserDefaults]objectForKey:@"skinColor"];
            if (_skinColor == nil) {
                  _skinColor = @"red";
            }
    }
    
    +(void)setSkinColor:(NSString *)skinColor{
           _skinColor = skinColor;
           //记录皮肤颜色
           [[NSUserDefaults standardUserDefaults]setObject:_skinColor forKey:@"skinColor"];
           [[NSUserDefaults standardUserDefaults]synchronize];
    }
    
    + (UIImage *)skinToolWithImageNamed:(NSString *)imageName{
              NSString *imageNamePath = [NSString stringWithFormat:@"skin/%@/%@",_skinColor,imageName];
             UIImage *image = [UIImage imageNamed:imageNamePath];
            return image;
    };
    @end
    

    第三个方法是设置图片内容的实现,其中要注意这行代码 NSString *imageNamePath = [NSString stringWithFormat:@"skin/%@/%@",_skinColor,imageName]; skin的资源文件,第一个%@是主题名,第二个%@是图片名。这里务必要说明一点,之所以是这样做,而不是直接设置一张图片名,是因为添加资源文件到工程中的方式和一般有所不同。添加资源方式见下图:


    添加图片素材的方式

    这是添加资源的时候要注意,选中Create folde references 这样才可以在app包中创建对应的文件夹,否则只是选中Create groups,不会在app包中创建文件夹,且名字相同的素材只能保留一份,其他的将会被覆盖。这是一个小技巧,这个小技巧一般会应用于游戏开发中的场景切换以及常规app的换肤相关问题。当然解决这个问题也可以通过创建.bundle资源包来解决,但是相比较这个方法会显得稍微麻烦一些。一般之所以这样做,是考虑到美工给的素材命名和结构问题,一般的素材结构会是这样:图片可能是以每一套皮肤命名相同,但是处在不同的文件夹。
    还有一个额外的说明: skinToolWithImageNamed: 这个方法最好写在viewWillAppear:方法中。

    相关文章

      网友评论

      本文标题:换肤工具类的简单封装

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