Coder Social home page Coder Social logo

smilezxlee / zxtheme Goto Github PK

View Code? Open in Web Editor NEW
116.0 6.0 16.0 328 KB

使用MethodSwizzling实现零侵入修改全局主题,无需修改项目旧代码,可随时添加、移除,可快速实现“暗黑模式(黑暗模式、深色模式、换肤)”,兼容xib与纯代码创建的view,兼容所有控件(含第三方控件)

License: MIT License

Ruby 0.42% Objective-C 99.58%
theme dark-theme dark-mode darkmode-ios13

zxtheme's Introduction

ZXTheme

License MIT  CocoaPods  CocoaPods  Support 

安装

通过CocoaPods安装

pod 'ZXTheme'

手动导入

  • 将ZXTheme拖入项目中。

导入头文件

#import "ZXTheme.h"

零侵入实现黑暗模式示例

  • 代码参照Appdelegate.m文件

Image text

说明

ZXTheme用于修改全局UI的主题,设置方法与注意点说明以UILabel为例:

  • 示例代码
[ZXTheme defaultTheme].zx_labelThemeBlock = ^ZXLabelTheme * _Nonnull(UILabel * _Nonnull label) {
    ZXLabelTheme *labelTheme = [[ZXLabelTheme alloc]init];
    labelTheme.textColor = [UIColor blueColor];
    labelTheme.textAlignment = NSTextAlignmentCenter;
    return labelTheme;
};
  • 说明:我们需要修改全局label的主题,则书写[ZXTheme defaultTheme].zx_labelThemeBlock
  • 这个block中有一个label对象,代表当前需要设置主题的label
  • 这个block需要一个返回值,在设置label主题的block中,这个返回值是ZXLabelTheme对象,创建这个对象,并更改其中的属性即可更改对应的label主题
  • 下方示例代码实现将所有文字内容为“测试”的label文字颜色设置为绿色,其他label的文字颜色不变
[ZXTheme defaultTheme].zx_labelThemeBlock = ^ZXLabelTheme * _Nonnull(UILabel * _Nonnull label) {
    ZXLabelTheme *labelTheme = [[ZXLabelTheme alloc]init];
    if([label.text isEqualToString:@"测试"]){
        labelTheme.textColor = [UIColor greenColor];
    }
    return labelTheme;
};
  • 下方示例代码实现将所有文字内容为“测试”的label文字颜色设置为绿色,其他label的文字颜色不变,所有label背景色变为红色
[ZXTheme defaultTheme].zx_labelThemeBlock = ^ZXLabelTheme * _Nonnull(UILabel * _Nonnull label) {
    ZXLabelTheme *labelTheme = [[ZXLabelTheme alloc]init];
    if([label.text isEqualToString:@"测试"]){
        labelTheme.textColor = [UIColor greenColor];
    }
    labelTheme.backgroundColor = [UIColor redColor];
    return labelTheme;
};
  • 下方示例代码实现将所有文字内容为“测试”的label文字颜色设置为绿色并且背景色变为红色,其他label主题不变
[ZXTheme defaultTheme].zx_labelThemeBlock = ^ZXLabelTheme * _Nonnull(UILabel * _Nonnull label) {
    ZXLabelTheme *labelTheme = [[ZXLabelTheme alloc]init];
    if([label.text isEqualToString:@"测试"]){
        labelTheme.textColor = [UIColor greenColor];
        labelTheme.backgroundColor = [UIColor redColor];
        return labelTheme;
    }else{
        return nil;
    }
};
  • 由上方三段示例代码可以得出以下规律:
    1.themeblock返回值为nil,则代表当前label对象不设置主题
    2.ZXLabelTheme对象中属性没有设置,则代表当前label对象中对应属性不设置主题
    3.ZXLabelTheme对象中属性有值,则当前label对象中对应属性用ZXLabelTheme对象的对应属性值,例如labelTheme.textColor有值,则label的textColor为labelTheme.textColor,否则label的textColor为label本身的textColor
  • 注意:ZXTheme中设置的主题拥有最高的管理权限,也就意味着,若您在ZXTheme中设置了对应UI控件的主题,则您在其他地方都无法更改对应UI控件的主题

以上是相关注意点和使用技巧说明,设置其他UI控件主题同理,因此下方不再赘述


所有UI控件主题设置

通用工具函数

  • UIView(Extension)
/**
 获取view所属的控制器

 @return view所属的控制器
 */
- (UIViewController*)zx_getViewController;

/**
 判断当前view是否是目标view类的子类(包含子类递归)

 @param cls 目标view的类
 @return 当前view是否是目标view类的子类(包含子类递归)
 */
- (BOOL)zx_inViewClass:(Class)cls;
/**
 是否是控制器的self.view

 @return 是否是控制器的self.view
 */
- (BOOL)zx_isControllerView;
  • UILabel(Extension)
/**
 是否属于UIButton
 */
@property(assign, nonatomic,readonly) BOOL zx_belongsToBtn;

/**
 是否属于UITextField中的placeholder
 */
@property(assign, nonatomic,readonly) BOOL zx_belongsToTextFieldPlaceholder;
  • UIImage(Extension)
/**
 将UIImage渲染为指定颜色

 @param color 渲染颜色
 @return 渲染之后的UIImage
 */
- (UIImage*)renderColor:(UIColor *)color;

ZXTheme支持设置全局主题的View


UIView

  • 设置view主题
[ZXTheme defaultTheme].zx_viewThemeBlock = ^ZXViewTheme * _Nonnull(UIView * _Nonnull view) {
    ZXViewTheme *viewTheme = [[ZXViewTheme alloc]init];
    if([view.nextResponder isKindOfClass:[UIViewController class]]){
        viewTheme.backgroundColor = [self getControllerBacViewColor];
    }
    return viewTheme;
};
  • ZXViewTheme所有属性
属性 描述
backgroundColor 设置view背景颜色

UILabel

  • 设置label主题
[ZXTheme defaultTheme].zx_labelThemeBlock = ^ZXLabelTheme * _Nonnull(UILabel * _Nonnull label) {
    ZXLabelTheme *labelTheme = [[ZXLabelTheme alloc]init];
    labelTheme.textColor = [UIColor redColor];
    labelTheme.font = [UIFont systemFontOfSize:14];
    labelTheme.textAlignment = NSTextAlignmentCenter;
    labelTheme.lineBreakMode = NSLineBreakByCharWrapping;
    labelTheme.backgroundColor = [UIColor redColor];
    return labelTheme;
};
  • ZXLabelTheme所有属性
属性 描述
textColor 设置文字颜色
font 设置文字字体
textAlignment 设置文字对齐方式
lineBreakMode 设置文字换行模式
highlighted 设置文字是否高亮
highlightedTextColor 设置文字高亮时候的颜色
adjustsFontSizeToFitWidth 设置文字是否根据宽度自动调整字体
numberOfLines 设置文字最大行数
backgroundColor 设置文字背景颜色

UIButton

  • 设置button主题
[ZXTheme defaultTheme].zx_buttonThemeBlock = ^ZXButtonTheme * _Nonnull(UIButton * _Nonnull button) {
    ZXButtonTheme *buttonTheme = [[ZXButtonTheme alloc]init];
    [buttonTheme setTitleColor:[UIColor yellowColor] forState:UIControlStateNormal];
    [buttonTheme setBackgroundImage:[UIImage imageNamed:@"kanjia"] forState:UIControlStateNormal];
    buttonTheme.backgroundColor = [UIColor yellowColor];
    return buttonTheme;
};
  • ZXButtonTheme所有属性/方法
属性/方法 描述
tintColor 设置按钮tintColor
setTitleColor:forState: 根据状态设置按钮文字颜色
setTitleShadowColor:forState: 根据状态设置按钮文字阴影颜色
setImage:forState 根据状态设置按钮图片
setBackgroundImageColor::forState 根据状态设置按钮背景图片
backgroundColor 设置按钮背景颜色

UISegmentedControl

  • 设置segmentedControl主题
[ZXTheme defaultTheme].zx_segmentedControlThemeBlock = ^ZXSegmentedControlTheme * _Nonnull(UISegmentedControl * _Nonnull segmentedControl) {
    ZXSegmentedControlTheme *segmentedControlTheme = [[ZXSegmentedControlTheme alloc]init];
    segmentedControlTheme.tintColor = [UIColor redColor];
    return segmentedControlTheme;
};
  • ZXSegmentedControlTheme所有属性
属性 描述
tintColor 设置SegmentedControl的tintColor
backgroundColor 设置SegmentedControl的背景颜色

UITextField

  • 设置textField主题
[ZXTheme defaultTheme].zx_textFieldThemeBlock = ^ZXTextFieldTheme * _Nonnull(UITextField * _Nonnull textField) {
    ZXTextFieldTheme *textFieldTheme = [[ZXTextFieldTheme alloc]init];
    textFieldTheme.tintColor = [UIColor redColor];
    textFieldTheme.textColor = [UIColor blueColor];
    textFieldTheme.placeholderColor = [UIColor redColor];
    return textFieldTheme;
};
  • ZXTextFieldTheme所有属性
属性 描述
textColor 设置TextField颜色
font 设置TextField字体
textAlignment 设置TextField对齐方式
tintColor 设置TextField的tintColor
placeholderColor 设置TextField的placeholder颜色
backgroundColor 设置TextField的背景颜色

UISlider

  • 设置slider主题
[ZXTheme defaultTheme].zx_sliderThemeBlock = ^ZXSliderTheme * _Nonnull(UISlider * _Nonnull slider) {
    ZXSliderTheme *sliderTheme = [[ZXSliderTheme alloc]init];
    sliderTheme.minimumTrackTintColor = [UIColor redColor];
    sliderTheme.maximumTrackTintColor = [UIColor blueColor];
    sliderTheme.thumbTintColor = [UIColor yellowColor];
    return sliderTheme;
};
  • ZXSliderTheme所有属性
属性 描述
minimumTrackTintColor 设置Slider左侧背景颜色
maximumTrackTintColor 设置Slider右侧背景颜色
thumbTintColor 设置Slider滑块颜色
minimumValueImage 设置Slider左侧图片
maximumValueImage 设置Slider右侧图片
backgroundColor 设置Slider背景颜色

UISwitch

  • 设置switch主题
[ZXTheme defaultTheme].zx_switchThemeBlock = ^ZXSwitchTheme * _Nonnull(UISwitch * _Nonnull mySwitch) {
    ZXSwitchTheme *switchTheme = [[ZXSwitchTheme alloc]init];
    switchTheme.onTintColor = [UIColor redColor];
    switchTheme.tintColor = [UIColor redColor];
    return switchTheme;
};
  • ZXSwitchTheme所有属性
属性 描述
tintColor 设置Switch的tintColor
onTintColor 设置Switch的onTintColor
backgroundColor 设置Switch背景颜色

UIActivityIndicatorView

  • 设置activityIndicatorView主题
[ZXTheme defaultTheme].zx_activityIndicatorViewThemeBlock = ^ZXActivityIndicatorViewTheme * _Nonnull(UIActivityIndicatorView * _Nonnull activityIndicatorView) {
    ZXActivityIndicatorViewTheme *activityIndicatorViewTheme = [[ZXActivityIndicatorViewTheme alloc]init];
    activityIndicatorViewTheme.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;
    return activityIndicatorViewTheme;
};
  • ZXActivityIndicatorViewTheme所有属性
属性 描述
activityIndicatorViewStyle 设置ActivityIndicatorView样式
backgroundColor 设置Switch背景颜色

UIProgressView

  • 设置progressView主题
[ZXTheme defaultTheme].zx_progressViewThemeBlock = ^ZXProgressViewTheme * _Nonnull(UIProgressView * _Nonnull progressView) {
    ZXProgressViewTheme *progressViewTheme = [[ZXProgressViewTheme alloc]init];
    progressViewTheme.progressTintColor = [UIColor redColor];
    progressViewTheme.trackTintColor = [UIColor blueColor];
    return progressViewTheme;
};
  • ZXProgressViewTheme所有属性
属性 描述
progressTintColor 设置ProgressView已加载的进度条颜色
trackTintColor 设置ProgressView未加载的进度条颜色
progressImage 设置ProgressView已加载的进度条图片
trackImage 设置ProgressView未加载的进度条图片

UIPageControl

  • 设置pageControl主题
[ZXTheme defaultTheme].zx_pageControlThemeBlock = ^ZXPageControlTheme * _Nonnull(UIPageControl * _Nonnull pageControl) {
    ZXPageControlTheme *pageControlTheme = [[ZXPageControlTheme alloc]init];
    pageControlTheme.pageIndicatorTintColor = [UIColor redColor];
    pageControlTheme.currentPageIndicatorTintColor = [UIColor blueColor];
    return pageControlTheme;
};
  • ZXPageControlTheme所有属性
属性 描述
pageIndicatorTintColor 设置PageControl其他页的颜色
currentPageIndicatorTintColor 设置PageControl当前页的颜色

UIStepper

  • 设置stepper主题
[ZXTheme defaultTheme].zx_stepperThemeBlock = ^ZXStepperTheme * _Nonnull(UIStepper * _Nonnull stepper) {
    ZXStepperTheme *stepperTheme = [[ZXStepperTheme alloc]init];
    stepperTheme.tintColor = [UIColor whiteColor];
    return stepperTheme;
};
  • ZXStepperTheme所有属性
属性 描述
tintColor 设置Stepper的tintColor
backgroundColor 设置Stepper背景颜色

UIImageView

  • 设置imageView主题
[ZXTheme defaultTheme].zx_imageViewThemeBlock = ^ZXImageViewTheme * _Nonnull(UIImageView * _Nonnull imageView) {
    if(imageView.frame.size.width == 50){
        ZXImageViewTheme *imageViewTheme = [[ZXImageViewTheme alloc]init];
        imageViewTheme.imageColor = [UIColor redColor];
        imageViewTheme.backgroundColor = [UIColor yellowColor];
        return imageViewTheme;
    }else{
        return nil;
    }
};
  • ZXImageViewTheme所有属性
属性 描述
image 设置ImageView的image
imageColor 设置ImageView的image颜色
highlightedImage 设置ImageView的highlightedImage
highlightedImageColor 设置ImageView的highlightedImage颜色
animationImages 设置ImageView的动画image数组
animationImagesColor 设置ImageView的image数组的颜色
highlightedAnimationImages 设置ImageView的动画highlightedImage数组
highlightedAnimationImagesColor 设置ImageView的highlightedAnimationImages数组的颜色
tintColor 设置ImageView的tintColor
backgroundColor 设置ImageView背景颜色

UITextView

  • 设置textView主题
[ZXTheme defaultTheme].zx_textViewThemeBlock = ^ZXTextViewTheme * _Nonnull(UITextView * _Nonnull textView) {
    ZXTextViewTheme *textViewTheme = [[ZXTextViewTheme alloc]init];
    textViewTheme.textColor = [UIColor redColor];
    textViewTheme.backgroundColor = [UIColor blueColor];
    return textViewTheme;
};
  • ZXTextViewTheme所有属性
属性 描述
textColor 设置TextView的文字颜色
font 设置TextView的文字字体
textAlignment 设置TextView的文字对齐方式
backgroundColor 设置TextView的背景颜色

UITabBar

  • 设置tabBar主题
[ZXTheme defaultTheme].zx_tabBarThemeBlock  = ^ZXTabBarTheme * _Nonnull(UITabBar * _Nonnull tabBar) {
    ZXTabBarTheme *tabBarTheme = [[ZXTabBarTheme alloc]init];
    tabBarTheme.translucent = NO;
    tabBarTheme.barTintColor = [self getTabbarTintColor];
    return tabBarTheme;
};
  • ZXTabBarTheme所有属性
属性 描述
tintColor 设置Tabbar的tintColor
translucent 设置Tabbar是否透明
barTintColor 设置Tabbar的背景色
backgroundImage 设置Tabbar的背景图片
selectionIndicatorImage 设置Tabbar的selectionIndicatorImage
shadowImage 设置Tabbar的shadowImage

UITabBarItem

  • 设置tabBarItem主题
[ZXTheme defaultTheme].zx_tabBarItemThemeBlock = ^ZXTabBarItemTheme * _Nonnull(UITabBarItem * _Nonnull tabBarItem) {
    ZXTabBarItemTheme *tabBarItemTheme = [[ZXTabBarItemTheme alloc]init];
    tabBarItemTheme.selectedImageColor = [UIColor redColor];
    [tabBarItemTheme setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont systemFontOfSize:11],NSFontAttributeName, [UIColor redColor],NSForegroundColorAttributeName, nil] forState:UIControlStateSelected];
    return tabBarItemTheme;
};
  • ZXTabBarItemTheme所有属性
属性/方法 描述
image 设置TabBarItem的image
imageColor 设置TabBarItem的image颜色
selectedImage 设置TabBarItem的selectedImage
selectedImageColor 设置TabBarItem的selectedImage颜色
setTitleTextAttributes:forState: 根据状态设置TabBarItem文字属性

UINavigationBar

  • 设置navigationBar主题
[ZXTheme defaultTheme].zx_navigationBarThemeBlock = ^ZXNavigationBarTheme * _Nonnull(UINavigationBar * _Nonnull navigationBar) {
    ZXNavigationBarTheme *navigationBarTheme = [[ZXNavigationBarTheme alloc]init];
    navigationBarTheme.translucent = NO;
    navigationBarTheme.barTintColor = UIColorFromRGB(0x1c1c1c);
    navigationBarTheme.titleTextAttributes = @{NSForegroundColorAttributeName:[UIColor redColor],NSFontAttributeName:[UIFont boldSystemFontOfSize:20]};
    return navigationBarTheme;
};
  • ZXNavigationBarTheme所有属性
属性 描述
tintColor 设置NavigationBar的tintColor
translucent 设置NavigationBar是否透明
barTintColor 设置NavigationBar的barTintColor
shadowImage 设置NavigationBar的shadowImage
titleTextAttributes 设置NavigationBar的titleTextAttributes

UIBarButtonItem

  • 设置barButtonItem主题
[ZXTheme defaultTheme].zx_barButtonItemThemeBlock = ^ZXBarButtonItemTheme * _Nonnull(UIBarButtonItem * _Nonnull barButtonItem){
    ZXBarButtonItemTheme *barButtonItemTheme = [[ZXBarButtonItemTheme alloc]init];
    barButtonItemTheme.tintColor = [UIColor redColor];
    return barButtonItemTheme;
};
  • ZXBarButtonItemTheme所有属性
属性 描述
style 设置BarButtonItem的style
tintColor 设置BarButtonItem的tintColor
customView 设置BarButtonItem的customView

UITableView

  • 设置tableView主题
[ZXTheme defaultTheme].zx_tableViewThemeBlock = ^ZXTableViewTheme * _Nonnull(UITableView * _Nonnull tableView) {
    ZXTableViewTheme *tableViewTheme = [[ZXTableViewTheme alloc]init];
    tableViewTheme.separatorStyle = UITableViewCellSeparatorStyleNone;
    tableViewTheme.backgroundColor = [self getTableViewBacColor];
    tableViewTheme.viewForHeaderInSection = ^UIView * _Nonnull(UIView * _Nonnull headerView, NSUInteger section) {
        headerView.backgroundColor = [self getTableViewHeaderViewBacColor];
        for (UIView *view in headerView.subviews) {
            if([view isKindOfClass:[UILabel class]]){
                ((UILabel *)view).textColor = [self getTableViewHeaderViewLabelTextColor];
            }
            
        }
        return headerView;
    };
    tableViewTheme.cellForRowAtIndexPath = ^UITableViewCell * _Nonnull(UITableViewCell * _Nonnull cell, NSIndexPath * _Nonnull indexPath) {
        cell.backgroundColor = [self getTableViewCellBacColor];
        for (UIView *view in cell.contentView.subviews) {
            if([view isKindOfClass:[UILabel class]]){
                ((UILabel *)view).textColor = [self getTableViewCellLabelTextColor];
            }
            if([view isKindOfClass:[UIImageView class]]){
                ((UIImageView *)view).image = [((UIImageView *)view).image renderColor:[self getTableViewCellImageViewRenderColor]];
            }
        }
        return cell;
    };
    return tableViewTheme;
};
  • ZXTableViewTheme所有属性
属性 描述
backgroundColor 设置TableView的backgroundColor
backgroundView 设置TableView的backgroundView
sectionIndexColor 设置TableView的sectionIndexColor
sectionIndexBackgroundColor 设置TableView的sectionIndexBackgroundColor
sectionIndexTrackingBackgroundColor 设置TableView的sectionIndexTrackingBackgroundColor
separatorStyle 设置TableView的separatorStyle
separatorColor 设置TableView的separatorColor
separatorEffect 设置TableView的separatorEffect
tableHeaderView 设置TableView的tableHeaderView
tableFooterView 设置TableView的tableFooterView
cellForRowAtIndexPath 设置TableView的cell
viewForHeaderInSection 设置TableView的headerView
viewForFooterInSection 设置TableView的footerView

UICollectionView

  • 设置collectionView主题
[ZXTheme defaultTheme].zx_collectionViewThemeBlock = ^ZXCollectionViewTheme * _Nonnull(UICollectionView * _Nonnull collectionView) {
    ZXCollectionViewTheme *collectionViewTheme = [[ZXCollectionViewTheme alloc]init];
    collectionViewTheme.backgroundColor = [self getCollectionViewBacColor];
    collectionViewTheme.cellForItemAtIndexPath = ^UICollectionViewCell * _Nonnull(UICollectionViewCell * _Nonnull cell, NSIndexPath * _Nonnull indexPath) {
        cell.backgroundColor = [self getCollectionViewCellBacColor];
        for (UIView *view in cell.contentView.subviews) {
            if([view isKindOfClass:[UILabel class]]){
                ((UILabel *)view).textColor = [self getCollectionViewCellLabelTextColor];
            }
        }
        return cell;
    };
    collectionViewTheme.viewForSupplementaryElement = ^UICollectionReusableView * _Nonnull(UICollectionReusableView * _Nonnull reusableView, NSString * _Nonnull kind, NSIndexPath * _Nonnull indexPath) {
        reusableView.backgroundColor = [self getCollectionViewHeaderViewBacColor];
        for (UIView *view in reusableView.subviews) {
            if([view isKindOfClass:[UILabel class]]){
                ((UILabel *)view).textColor = [self getCollectionViewHeaderViewLabelTextColor];
            }
            
        }
        return reusableView;
    };
    return collectionViewTheme;
};
  • ZXCollectionViewTheme所有属性
属性 描述
backgroundColor 设置CollectionView的backgroundColor
backgroundView 设置CollectionView的backgroundView
cellForItemAtIndexPath 设置CollectionView的cell
viewForSupplementaryElement 设置CollectionView的headerView和footerView

自定义其他View或属性的主题

  • 例如需要添加UIAlertController的主题设置
  • 创建UIAlertController的分类
  • 在.m文件中实现
#import "UIAlertController+ZXCustomTheme.h"
#import "ZXTheme.h"
@implementation UIAlertController (ZXCustomTheme)
+ (void)load{
    [self zx_handleThemeWithTargetSelector:@selector(addAction:) handleSelector:@selector(zx_addAction:)];
}
- (void)zx_addAction:(UIAlertAction *)action{
    [action setValue:[UIColor redColor] forKey:@"titleTextColor"];
    [self zx_addAction:action];
}
@end
  • 以上代码实现将UIAlertController的actions文字颜色变为红色的效果

zxtheme's People

Contributors

smilezxlee avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

zxtheme's Issues

集成后报这个错误

assertion failed [thread_context != nullptr]: got an exception for an unknown thread
(ExceptionServer.cpp:677 handle_exception)

tableview报错

错误截图如下:
image
image

最后,我是把关于ZXTheme的任何代码都去掉,还是报这个错误。

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.