是 UISwitch
的开源替代品,可以通过 UIAppearance
协议进行自定义。
在 Xcode 中构建并运行 RESwitchExample
项目,以查看 RESwitch
的操作。
您需要做的只是将 RESwitch
文件放入您的项目中,并添加 #include "RESwitch.h"
到将会使用它的类的顶部。
RESwitch *switchView = [[RESwitch alloc] initWithFrame:CGRectMake(30, 100, 76, 28)];
[switchView addTarget:self action:@selector(switchViewChanged:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:switchView];
// Now let's customize it
//
[switchView setBackgroundImage:[UIImage imageNamed:@"Switch_Background"]];
[switchView setKnobImage:[UIImage imageNamed:@"Switch_Knob"]];
[switchView setOverlayImage:nil];
[switchView setHighlightedKnobImage:nil];
[switchView setCornerRadius:0];
[switchView setKnobOffset:CGSizeMake(0, 0)];
[switchView setTextShadowOffset:CGSizeMake(0, 0)];
[switchView setFont:[UIFont boldSystemFontOfSize:14]];
[switchView setTextOffset:CGSizeMake(3, 2) forLabel:RESwitchLabelOff];
[switchView setTextColor:[UIColor blackColor] forLabel:RESwitchLabelOn];
[switchView setTextColor:[UIColor colorWithRed:143/255.0 green:19/255.0 blue:24/255.0 alpha:1] forLabel:RESwitchLabelOff];
switchView.layer.cornerRadius = 4;
switchView.layer.borderColor = [UIColor colorWithRed:224/255.0 green:36/255.0 blue:24/255.0 alpha:1].CGColor;
switchView.layer.borderWidth = 2;
switchView.layer.masksToBounds = YES;
您可以使用外观代理([RESwitch appearance]
)自定义所有开关的外观,或者只自定义一个开关。使用以下属性和任务来自定义 RESwitch
@property (strong, nonatomic) UIImage *backgroundImage;
@property (strong, nonatomic) UIImage *overlayImage;
@property (strong, nonatomic) UIImage *knobImage;
@property (strong, nonatomic) UIImage *highlightedKnobImage;
@property (assign, readwrite, nonatomic) CGSize knobOffset;
@property (assign, readwrite, nonatomic) CGSize textShadowOffset;
@property (strong, nonatomic) UIFont *font;
- (CGFloat)cornerRadius;
- (void)setCornerRadius:(CGFloat)radius;
- (void)setTextOffset:(CGSize)offset forLabel:(RESwitchLabel)label;
- (void)setTextColor:(UIColor *)color forLabel:(RESwitchLabel)label;
- (void)setTextShadowColor:(UIColor *)color forLabel:(RESwitchLabel)label;
- (void)setTitle:(NSString *)title forLabel:(RESwitchLabel)label;
例如,这样设置 RESwitch
的默认外观
[[RESwitch appearance] setBackgroundImage:[UIImage imageNamed:@"RESwitch.bundle/Background"]];
[[RESwitch appearance] setOverlayImage:[UIImage imageNamed:@"RESwitch.bundle/Overlay"]];
[[RESwitch appearance] setKnobImage:[UIImage imageNamed:@"RESwitch.bundle/Knob"]];
[[RESwitch appearance] setHighlightedKnobImage:[UIImage imageNamed:@"RESwitch.bundle/Knob_Highlighted"]];
[[RESwitch appearance] setKnobOffset:CGSizeMake(4, -3)];
[[RESwitch appearance] setCornerRadius:14];
[[RESwitch appearance] setFont:[UIFont boldSystemFontOfSize:17]];
[[RESwitch appearance] setTextOffset:CGSizeMake(0, 0) forLabel:RESwitchLabelOn];
[[RESwitch appearance] setTextOffset:CGSizeMake(0, 0) forLabel:RESwitchLabelOff];
[[RESwitch appearance] setTextShadowOffset:CGSizeMake(0, -1)];
Roman Efimov
RESwitch 在 MIT 许可下提供。
版权所有 © 2013 Roman Efimov。
在此条件下,任何人无需费用即可获得本软件及其相关文档文件(“软件”)的副本(以下称为“许可证”),包括但不限于使用、复制、修改、合并、出版、分发、再许可和/或出售副本,并允许向软件提供副本的个人就软件进行这样的事务,前提是以下条件
上述版权声明和本许可声明应包含在软件的所有副本或实质性部分中。
软件按“现状”提供,不提供任何形式的保证,明示或暗示,包括但不限于适销性、适用于特定目的和无侵权性保证。在任何情况下,作者或版权所有者均不对由于合同行为、侵权行为或其他行为引起的任何索赔、损害或其他责任承担任何责任,这些索赔、损害或其他责任源于、源于或与软件或其使用或任何其他操作有关。