Code Monkey home page Code Monkey logo

yylabel-x-darkmodekit's Introduction

DarkMode For YYLabel

As we all know YYLabel is no longer update. If your project is using YYLabel and has to adapt iOS13 DarkMode, it's a hard thing to do now.

This repo is using FluentDarkModeKit for it's core code, all you need to do is just initialize YYLabel+DarkModeKit .

You can initialize in Appdelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  [YYLabel config];
 .... 
}

How To Use

  1. If you are using YYTextLayout, just config Dynamic Color in NSMutableAttributedString
    NSMutableAttributedString *demoStr = [[NSMutableAttributedString alloc] initWithString:@"lalala"];
    [demoStr addAttribute:NSForegroundColorAttributeName value:[UIColor dm_colorWithLightColor:[UIColor redColor] darkColor:[UIColor blueColor]] range:NSMakeRange(0, demoStr.length)];
    YYTextContainer *container = [YYTextContainer containerWithSize:CGSizeMake([UIScreen mainScreen].bounds.size.width, CGFLOAT_MAX)];
    YYTextLayout *layout = [YYTextLayout layoutWithContainer:container text:demoStr];
  1. If you are using NSMutableAttributedString , you can code like above tips too

How it work

I'm using runtime swizzle method to monitor the textlayout and attributestring . When it is setted , find if there is Dynamic Color in AttributeString and mark it.

Adopted FluentDarkModeKit Delegate . When DarkMode change , reset AttributeString's NSForegroundColorAttributeName if it has Dynamic Color Mark

What can not be Done

As we know , iOS CGColor is not support Darkmode . If you set AttributeString like this:

attributeString.color = [xxxx]
//NSAttributeString+YYText.m

it won't work because it using CGColor

If you Modify source code , delete CGColor in .m , it can work Again!

yylabel-x-darkmodekit's People

Contributors

swlfigo avatar

Stargazers

Yancy avatar  avatar

Watchers

James Cloos avatar  avatar

Forkers

xnius

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.