酷奇每日推薦 2021-09-07

在APP中,肯定會(huì)用到UILabel,例如標(biāo)題,內(nèi)容,腳注等等,都以文字內(nèi)容的形式進(jìn)行展示。此時(shí)A頁(yè)面有標(biāo)題,B頁(yè)面也有標(biāo)題,那么設(shè)計(jì)一個(gè)TitleLabel,是不是有必要?

個(gè)人覺(jué)得還是非常有必要的,雖然可能每個(gè)Label的定義也就多兩行字體和顏色的設(shè)定,但是如果APP有10處地方用到了標(biāo)題Label,那么你就需要重復(fù)10遍,同時(shí)對(duì)修改也極其不友好。

所以,一旦某一個(gè)控件需要以同樣的風(fēng)格出現(xiàn)在多個(gè)地方,那么我還是建議新建一個(gè)類(lèi)來(lái)定義。同時(shí),如果這個(gè)類(lèi)的風(fēng)格,可以通過(guò)配置文件來(lái)設(shè)置,那么就更加好了。

今天要推薦給大家的是SwiftTheme
目前iOS平臺(tái)上最方便的換膚框架,而且功能豐富、高性能、可擴(kuò)展,提供一個(gè)全新的換膚解決方案,使用純Swift編寫(xiě),但完全兼容OC。

結(jié)合SwiftTheme的plist模式,可以通過(guò)配置文件來(lái)定義每個(gè)控件的風(fēng)格。

目前大致的想法是這樣:以Label為例,首先需要定義INSLabel繼承UILabel,通過(guò)SwiftTheme以Plist的方式配置字體和顏色。

- (instancetype)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
        NSString *classString = NSStringFromClass([self class]);
        NSString *fontPath = [NSString stringWithFormat:@"%@.textFont", classString];
        NSString *textColorPath = [NSString stringWithFormat:@"%@.textColor", classString];

        self.theme_font = [ThemeFontPicker pickerWithKeyPath:fontPath map:^UIFont * _Nullable(id _Nullable map) {
            NSString *fontString = (NSString *)map;
            NSArray *stringArray = [fontString componentsSeparatedByString:@","];
            return [UIFont fontWithName:stringArray[0] size:[stringArray[1] integerValue]];
        }];
        
        self.theme_textColor = [ThemeColorPicker pickerWithKeyPath:textColorPath];
    }
    
    return self;
}

此后,考慮APP會(huì)使用到Title,SubTitle,F(xiàn)ooter這三種不同風(fēng)格的Label,所以需要從INSLabel繼承,定義INSTitleLabel, INSSubTitleLabel, INSFooterLabel。此時(shí),再在Plist配置文件中添加并定義對(duì)應(yīng)的風(fēng)格即可,例如:


截屏2021-09-16 下午6.26.31.png

這樣看上去繼承層次略多了一些,所以也可以考慮用方法交換,取消掉INSTitle這一層。

又或者是否考慮可以定義一些自己的UI類(lèi)庫(kù)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容