ЗSkin 是一个强大的 iOS 皮肤/主题套件。
您可以使用 ZSkin 轻松定制和更改您应用程序的外观。
联系我 : [email protected]
ЗSkin 可在 CocoaPods 上使用。只需将以下内容添加到您的项目 Podfile 中
pod 'ZSkin'
Bugs 首先在 master 中修复,然后通过一个指定的发布可用。如果您倾向于保持最前沿,您可以使用 master 中的 ЗSkin, Podfile 中的以下条目
pod 'ZSkin', :git => 'https://github.com/peter-m-shi/ZSkin.git'
演示 Gif(即将推出)
通过包含以下导入使用它
#import "ZSkinKit.h"
并包含您定义的 ZColorSkin 类别的导入
#import "ZColorSkin+Custom.h"
绑定 UIView 属性如下
ZSB(self.view,backgroundColor) = SK(color.background);
绑定 UILabel 属性如下
ZSB(self.label,textColor) = SK(color.foreground);
绑定 UIButton 属性如下
ZSB(self.button, backgroundColor) = SK(color.background);
ZSB(self.button, titleColorNormal) = SK(color.foreground);
ZSB(self.button, titleColorHightlight) = SK(color.hightlight);
ZSB(self.button, titleColorSelected) = SK(color.selected);
更多其他绑定方式(不建议)
//Binding By Literal
[self.textField bind:@"backgroundColor" to:@"color.background"];
//Binding By Macro Definition
[self.textField bind:OP(self.textField, backgroundColor) to:SK(color.background)];
[self.textField bind:OPView(backgroundColor) to:SK(color.foreground)];
[self.label bind:OPLabel(textColor) to:SK(color.background)];
- (IBAction)clickToBindOrUnBind:(id)sender
{
UIButton *btn = (UIButton *)sender;
//Dynamic Binding And UnBinding
NSString *oKeyPath = [btn bindInfo:@"backgroundColor"];
if (oKeyPath)
{
[btn unBind:@"backgroundColor" to:oKeyPath];
[btn setTitle:@"Click to bind" forState:UIControlStateNormal];
}
else
{
[btn bind:@"backgroundColor" to:@"color.foreground"];
[btn setTitle:@"Click to unbind" forState:UIControlStateNormal];
}
}
[self.button3 bind:^(id sender, ZSkin *skin) {
//update UI here
UIButton *btn = sender;
[btn setBackgroundColor:skin.color.foreground];
[btn setTitleColor:skin.color.background forState:UIControlStateNormal];
[btn setTitle:skin.name forState:UIControlStateNormal];
[btn.titleLabel setFont:[UIFont boldSystemFontOfSize:[skin.font.largeSize floatValue]]];
}];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(receiveNotification:)
name:ZSkinChangedNotificationKey
object:nil];
...
- (void)receiveNotification:(NSNotification *)notification
{
ZSkin *skin = notification.object;
NSLog(@"%@ receive skin change notification:%@", self.class, skin);
self.title = skin.name;
}
按以下方式轻松更改皮肤
//Change skin with index number
[[ZSkinManager instance] setSkinIndexed:0];
//Change skin with name string
[[ZSkinManager instance] setSkinNamed:@"dark"];
//Change skin
self.skin = [[ZSkinManager instance].skins objectAtIndex:self.segment.selectedSegmentIndex];
[ZSkinManager instance].skin = self.skin;
skin.bundle
├── color.plist // color config file
├── font.plist // font config file
└── image // image config folder
└── test.jpg
支持的颜色.plist 中的格式
// "0xffcc00" //RGB
// "#ffcc00" //RGB
// "255,204,0" //RGB
// "0xffcc00dd" //RGBA
// "#ffcc00dd" //RGBA
// "255,204,0,0.87" //RGBA
// "red" Color property of UIColor
按以下方式访问颜色属性
[ZSkinManager instance].skin.color.foreground;
c
### Custom Color
A Category Class Named(Custom) should be created if you add any key to "color.plist"
And the new property with the same name should be add to Category Class. etc.
```objective-c
ZColorSkin+Custom.h
@interface ZColorSkin (Custom)
@property (nonatomic) UIColor *customColor;
...
@end
ZColorSkin+Custom.m
@implementation ZColorSkin (Custom)
DYNAMIC(customColor,setCustomColor,UIColor*)
...
@end
按以下方式访问字体属性
[ZSkinManager instance].skin.font.largeSize;
按以下方式访问图像
[self.image bind:^(id sender, ZSkin *skin) {
[(UIImageView *)sender setImage:[skin.image imageNamed:@"folder1/test.png"]];
}];
有些外部资源链接集合可能很有价值
如果您发现错误或需要帮助,您可以在 创建一个 issue
期待您的拉取请求 :D。但请确保它适合大多数开发人员并且易于使用。如果您不确定,您可以创建一个 issue,然后在我们编码之前讨论。
MIT 许可证(MIT)
版权所有 © 2016 peter-m-shi
特此免费授予任何获得本软件及其相关文档文件(以下简称“软件”)的副本的人
使用、复制、修改、合并、发布、分发、再许可、出售或以任何形式处置软件的任何权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可、出售或以任何形式处置软件的权利,同时允许将软件提供给任何获得软件的人
的权利,同时受以下条件的约束
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途的适用性以及非侵权性。
在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任承担责任,无论是因合同、侵权或其他方式引起的,包括但不限于因使用软件或与本软件的使用或其他方式有关的任何损害。
在本软件中使用或与之交互的软件。
软件或本软件的使用或其他方式。
软件或本软件的使用或其他方式。
软件或本软件的使用或其他方式。
软件或本软件的使用或其他方式。
软件或本软件的使用或其他方式。
软件或本软件的使用或其他方式。
软件或本软件的使用或其他方式。
软件或本软件的使用或其他方式。
联系 GitHub API 培训商店博客关于