• Stars
    star
    116
  • Rank 303,894 (Top 6 %)
  • Language
    Objective-C
  • License
    MIT License
  • Created over 5 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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

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文字颜色变为红色的效果

More Repositories

1

uni-z-paging

【uni-app下拉刷新、上拉加载】高性能,全平台兼容。支持vue、nvue、vue2、vue3,使用wxs+renderjs实现。支持虚拟列表,支持自定义下拉刷新、上拉加载更多,支持自动管理空数据图、点击返回顶部,支持聊天分页、本地分页,支持国际化等100+项配置
JavaScript
738
star
2

IpaDownloadTool

输入下载页面链接自动解析ipa下载地址,支持本地下载,支持第三方和自定义下载页面(通过拦截webView的itms-services://请求获取plist文件,支持各类企业版、内测包ipa下载)
Objective-C
602
star
3

ZXHookDetection

【iOS应用安全、安全攻防】hook及越狱的基本防护与检测(动态库注入检测、hook检测与防护、越狱检测、签名校验、IDA反编译分析加密协议Demo);【数据传输安全】浅谈http、https与数据加密
Objective-C
424
star
4

ZXRequestBlock

基于NSURLProtocol一句话实现iOS应用底层所有网络请求拦截(含网页ajax请求拦截【不支持WKWebView】)、一句话实现防抓包(使Thor,Charles,Burp等代理抓包方式全部失效,且即使开启了代理,也不影响App内部的正常请求)。包含http-dns解决方法,有效防止DNS劫持。用于分析http,https请求等
Objective-C
336
star
5

ZXNavigationBar

灵活轻量的自定义导航栏,导航栏属于控制器view,支持导航栏联动,一行代码实现【导航栏背景图片设置、导航栏渐变、折叠、修改Item大小和边距、自定义导航栏高度、全屏手势返回、pop拦截、仿系统导航栏历史堆栈】等各种效果
Objective-C
325
star
6

ZXHookUtil

【iOS逆向】高效Tweak工具函数集,基于theos、monkeyDev。(含方法调用链追踪、递归获取任意层级view、拦截并修改全局请求、清除keyChain数据、block还原、打印类的属性和方法、数据转换、数据存储、添加轮询、网络请求、加密解密等各种协助逆向分析函数)
Objective-C
230
star
7

OpenDingTalkHelperForiOS

iOS钉钉定时打卡助手【需要把备用机放在公司,仅用于定时打开钉钉】
217
star
8

uni-dingTalkHelper

钉钉定时打开测试工具
Vue
105
star
9

ZXCountDownView

【杀不死的倒计时】一个简单易用的倒计时View,常用于快速创建点击获取验证码按钮,支持各种自定义样式。(特点:重新进入当前页面或重启程序倒计时不会重置,仍将继续执行,且退出程序后的时间也会被自动计算在内)
Objective-C
58
star
10

ZXEmptyView

【支持tableView、collectionView、scrollView和普通View】轻松构建无数据、网络错误等占位图,简单易用,快速实现各种自定义效果!支持在根控制器中统一设置项目所有页面的空数据图,tableView与collectionView空数据图自动显示与隐藏,一劳永逸!
Objective-C
53
star
11

ZXBlockLog

【iOS逆向】根据block签名打印参数与返回值,hook block 并捕获、修改block参数解决方案的小demo
Objective-C
37
star
12

iOSSignatureAnalysis

iOSApp+Springboot后端sign签名+aes加密原理&逆向破解分析示例(class-dump+Logos+monkeyDev+IDA),含iOS端+JAVA后端源码。
Objective-C
27
star
13

JsonToModelOnLine

1JSON:Json字符串转模型类在线工具,支持任意层级Json解析,支持Java、PHP、Objective-C、Swift、C#、Vue、Typescript、Flutter等语言模型类属性名生成
JavaScript
26
star
14

DocumentLightMarkWipeTool

Python文档水印批量去除工具
Python
22
star
15

ZXTableView

快速、高效地构建TableView,节省80%以上重复代码,无需设置数据源和代理。
Objective-C
20
star
16

uni-z-tabs

【基于uni-app】一个简单轻量的tabs标签,全平台兼容,支持nvue、vue3
Vue
18
star
17

Candy

Candy是一只Windows上通过HOOK系统鼠标,监测鼠标位置与点击事件来实现的追着鼠标跑的小猫,有上下左右等多个方向,睡觉,惊醒等状态。
C#
15
star
18

ZXDataHandle

简单易用的数据转换和存储框架,支持一行代码将模型、模型数组、Json字符串、字典互转;支持模型映射到sqlite3数据库,无需书写sql
Objective-C
15
star
19

ZXCircleProgressView

类似温度计效果的进度条
Objective-C
13
star
20

ZXPagingScrollView

【基于MJRefresh】,两行代码搞定全部tableView与collectionView分页加载逻辑和效果
Objective-C
13
star
21

AppStoreMonitor

🌈 实时监控AppStore上的App,并在其版本更新生效时通知您
JavaScript
12
star
22

ZXSlideSelectTableView

快速、轻松地实现滑动选择tableView,支持各种自定义显示效果
Objective-C
12
star
23

aboutHttp

浅谈http、https与数据加密
11
star
24

ZXAgreementLabel

【基于YYText】超简单!一行代码实现点击同意协议Label
Objective-C
10
star
25

WXRobot

基于itchat的微信机器人小demo,记录好友消息和群消息,自动下载聊天文件,将消息记录存储到数据库中
Python
8
star
26

JsonToModelForMac

Mac上的一个协助开发小工具,通过Json字符串生成对应的Model代码,支持字典字符串的解析,支持多层级Json或字典字符串的解析
Objective-C
8
star
27

z-notify-api

一个基于spring-boot开发的RESTful风格的应用统一在线管理平台api端,为单机应用提供的版本管理、通知管理、通用文本管理、反馈管理、用户流量统计&分析等服务
Java
8
star
28

ZXTextSwitchView

可分割选中文字的颜色
Objective-C
8
star
29

PlantsVsZombiesPlug-In

使用C#编写的通过查找对应内存基址,并修改指定内存区域来达到修改植物大战僵尸阳光,关卡进度,金币数量等目的。
C#
7
star
30

FnPanel

flutter中类似Chome Network的调试面板,用于监听、分析、调试项目请求与响应
Dart
7
star
31

ZXBaseTableView

基于系统tableView的自定义封装,快速构造,极简的代码风格,无需设置代理和数据源,与业务无关部分内部自动处理,包含无数据占位图,分页封装,网络错误占位图,点击重新加载等,大量减少重复代码。
Objective-C
7
star
32

uni-z-paging-x

z-paging uniapp x版
SCSS
7
star
33

ZXFormValidate

iOS上表单校验的统一化和规范化,一行代码完成表单校验,数据赋值,回显
Objective-C
6
star
34

MagicPureGrayOutput

在线将图片转换为纯净的“灰色”(【图片叠加、图中藏图】营造预览一张图,大图另一张图的效果)
JavaScript
6
star
35

ColorfulQRCodeForJava

Java分区域彩色/渐变二维码
Java
5
star
36

TNewsPicker

腾讯新闻视频提取小工具,零广告、超轻量
Vue
3
star
37

ZXCrashRecord

简单的App崩溃检测类,可以仅获取崩溃次数,或设定自动清除崩溃次数的时间(用于检测连续崩溃),用户杀死App或App在后台被系统杀死不计为崩溃。
Objective-C
3
star
38

githubissue_h5

统计、整理github的issue
JavaScript
2
star
39

SmileZXLee.github.io

HTML
2
star
40

uni-z-paging-doc

z-paging文档,基于vuePress
2
star
41

SmileZXLee

1
star
42

ZXKVO

使用block方式一行代码实现kvo监听
Objective-C
1
star
43

EasyClip

使用C#编写的一款简单易用的Windows剪切板历史管理工具
1
star
44

fivein-a-rowBasics

使用C#编写的五子棋人机对战,包含权重计算和输赢判定等,算法比较基础。
C#
1
star
45

ZXCollectionView

快速、高效地构建CollectionView,节省80%以上重复代码,无需设置数据源和代理。
Objective-C
1
star
46

cooper-java

一个对接第三方服务的Java库,尽可能抹平与第三方的交互逻辑,使用最少的代码实现高效快速的对接。目前已实现:微信小程序登录、获取用户信息、获取手机号;微信公众号获取jsapi配置、登录、获取用户信息;阿里云发送手机短信。其他功能后续会继续添加
Java
1
star
47

z-notify-admin-vue

一个基于Ant Design Vue Pro开发的应用统一在线管理平台web端,为单机应用提供的版本管理、通知管理、通用文本管理、反馈管理、用户流量统计&分析等服务
Vue
1
star