GithubHelp home page GithubHelp logo

internetwei / lldark Goto Github PK

View Code? Open in Web Editor NEW
87.0 5.0 24.0 19.64 MB

适用于iOS深色模式的令人愉快的主题框架

Home Page: https://github.com/internetWei/llDark

License: MIT License

Objective-C 99.54% Ruby 0.46%
dark dark-theme dark-mode theme theme-ui theme-modes dark-resources

lldark's Issues

引入LLDark导致preferredStatusBarStyle不执行

建了一个测试Demo,然后引入LLDark, preferredStatusBarStyle 就不执行了。LLDark中的Demo的changeStatusBarStyle方法改变状态颜色也未生效

  • (UIStatusBarStyle)preferredStatusBarStyle
    {
    return UIStatusBarStyleLightContent;
    }

appearanceBindUpdater和themeDidChange感觉很类似

看了下代码,想问下appearanceBindUpdater和themeDidChange所有的object都有的属性,都是在主题切换的时候的回调吧? 这两个有什么区别吗? appearanceBindUpdater是通过isNeedRefresh控制,是不是themeDidChange里判断当前的theme和change的theme是否一致就可以控制每个object的themeDidChange?

UIViewController的方法交换导致的问题

UIViewController.methodExchange(@selector(llDark_viewDidAppear:), @selector(viewDidAppear:));

这个会导致我们的埋点SDK不能主动上报,大佬有什么解决方案吗?
先注释掉有没有什么影响

小小建议 😊

建议UIColor+Dark增加这样的两个方法,这样已经配置的颜色就不需要传参数nil了。这样看起来优雅

. h

/**
 创建一个主题颜色
 
 @discussion 自动从LLDarkSource中获取深色颜色 ⚠️ 切记需要在LLDarkSource中配置颜色
 */

- (UIColor * (^) (void))themeAutoColor;
/**
 创建一个主题CGColor
 
 @discussion 自动从LLDarkSource中获取深色颜色 ⚠️ 切记需要在LLDarkSource中配置颜色
 */
- (CGColorRef (^) (void))themeAutoCGColor;

.m

- (UIColor * _Nonnull (^)(void))themeAutoColor {
    return ^(void){
        UIColor *lightColor = self;
        if (self.isTheme) lightColor = self.lightColor;
        
        UIColor * _Nullable darkColor = LLDarkSource.darkColorForKey(lightColor);
        
        return UIColor.dynamicThemeColor(lightColor, darkColor);
    };
    
}

- (CGColorRef  _Nonnull (^)(void))themeAutoCGColor {
    return ^(void) {
        return (__bridge CGColorRef)self.themeAutoColor();
    };
}

CAGradientLayer的colors不使用themeColor创建颜色时,切换手机的暗黑模式,会导致颜色丢失

重现步骤:demo中第301行:
改之前:layer.colors = @[UIColor.redColor.themeColor(UIColor.blueColor), UIColor.greenColor, UIColor.blueColor.themeColor(UIColor.redColor)];

改之后:layer.colors = @[UIColor.redColor, UIColor.greenColor, UIColor.blueColor];

运行代码,在亮色和夜间模式间切换时,CAGradientLayer的颜色丢失。

注释掉:CAGradientLayer +Dark.m的第36行处status判断条件之后正常
大佬看下这里是不是有点问题。

不是深色模式但是字体颜色变了

APP退到后台,然后再进入前台,有时不是深色模式但是字体颜色变了,比如黑色字体变成了白色字体,导致在白色背景下看不到字了,大佬有碰到过吗?

项目里有灰色模式,获取CALayer的颜色(themeCGColor转换之后的颜色)进行灰度转换时,报错

1、发生崩溃的情况:
项目里在进行灰色模式切换时,会获取calayer当前的颜色进行灰度转换,发现由themeCGColor转换过后的颜色不是有效的CGColor。(见下方截图,是项目里在进行灰色模式处理时的方法交换之后的处理逻辑)

2、更改LLDark库里UIColor+Dark.m中第50行的代码之后,可以顺利运行。

  • (CGColorRef _Nonnull (^)(UIColor * _Nullable))themeCGColor {
    return ^(UIColor * _Nullable darkColor) {
    return (__bridge CGColorRef)self.themeColor(darkColor);
    };
    }
    改为:
  • (CGColorRef _Nonnull (^)(UIColor * _Nullable))themeCGColor {
    return ^(UIColor * _Nullable darkColor) {
    return self.themeColor(darkColor).CGColor;
    };
    }

Screen Shot 2021-01-19 at 4 25 21 PM

bugly 监控到的crash大佬知道是什么原因吗?发生了50多次

0 libdispatch.dylib __dispatch_once_wait.cold.1 + 28
1 libdispatch.dylib __dispatch_gate_broadcast_slow
2 ??? +[LLDarkWindow sharedInstance] (once.h:0)
3 ??? +[LLDarkManager refreshWindow] (LLDarkManager.m:0)
4 ??? +[LLDarkManager refreshDisplayedView] (LLDarkManager.m:70)
5 ??? +[LLDarkManager systemThemeDidChange] (LLDarkManager.m:54)
6 CoreFoundation _CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER + 28
10 Foundation -[NSNotificationCenter postNotificationName:object:userInfo:] + 96
11 GrowingAnalytics -[NSNotificationCenter(GrowingAutotracker) growing_postNotificationName:object:userInfo:] + 144
12 ??? -[LLDarkWindow traitCollectionDidChange:] (LLDarkWindow.m:106)
13 UIKitCore -[UIView _traitCollectionDidChangeInternal:] + 1020
16 UIKitCore -[UIWindow init] + 188
17 ??? __30+[LLDarkWindow sharedInstance]_block_invoke (LLDarkWindow.m:69)
18 libdispatch.dylib __dispatch_client_callout + 20
19 libdispatch.dylib __dispatch_once_callout + 32
20 ??? +[LLDarkWindow sharedInstance] (once.h:0)
21 ??? +[LLDarkWindow windowDidBecomeActive] (LLDarkWindow.m:0)
22 CoreFoundation _CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER + 28
26 Foundation -[NSNotificationCenter postNotificationName:object:userInfo:] + 96
27 GrowingAnalytics -[NSNotificationCenter(GrowingAutotracker) growing_postNotificationName:object:userInfo:] + 144
28 UIKitCore -[UIApplication _stopDeactivatingForReason:] + 1508
56 UIKitCore _UIApplicationMain + 2092
57 ??? main (UnityObj.mm:0)
58 ??? 0x0000000103254000 + 0

状态栏修改无无效

View controller-based status bar appearance设置为Yes ,需要不同界面去控制, 请问怎么修改,大佬

YYLable切换颜色时,无法生效

写demo时使用yylabel没有问题
在项目中,由于在字典转模型时,YYTextLayout是根据数据生成之后,存在模型里的,在cell赋值时会取模型中的YYTextLayout实例赋值给yylabel,不知道为什么切换暗黑模式时,没有效果,或者说只有可见的cell有效果,再来回滚动时,重新给cell赋值模型,又会变回之前的颜色值,请问有什么强制刷新所有控件的方法吗?

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.