一个适用于 iOS 5+ 的 iOS 7 UISwitch 模拟
https://cocoacontrols.cn/controls/klswitch
需要自动引用计数(ARC)
1. Drag the KLSwitch.xcodeproj to your existing project
2. Under Build Phases on your project's Xcode Project file add 'KLSwitch(KLSwitch)' to your Target Dependancies
3. Under Build on your Xcode Project file add 'libKLSwitch' & QuartzCore.framework under Link Binary With Libraries
4. Include #import <KLSwitch/KLSwitch.h> in any file you wish to use
通过 CocoaPods,将以下行添加到你的 Podfile 中
pod 'KLSwitch'
界面与您熟悉的常规 UISwitch 完全相同(http://developer.apple.com/library/ios/# documentation/uikit/reference/UISwitch_Class/Reference/Reference.html)
添加了一个事件处理块,当开关打开/关闭时可以收到状态变化,设置方法如下
mySwitch.didChangeHandler = ^(BOOL isOn) {
//Do something useful with it here
}
或者也可以使用自定义初始化器进行设置
- (id)initWithFrame:(CGRect)frame
didChangeHandler:(changeHandler) didChangeHandler;
查看示例项目以获取使用 Interface Builder 的示例用法
通过更改 KLNoteViewController.m
中的常量可以调整视觉外观
//Appearance Defaults - Colors
//Track Colors
#define kDefaultTrackOnColor [UIColor colorWithRed:83/255.0 green: 214/255.0 blue: 105/255.0 alpha: 1]
#define kDefaultTrackOffColor [UIColor colorWithWhite: 0.9 alpha:1.0]
#define kDefaultTrackContrastColor [UIColor whiteColor]
//Thumb Colors
#define kDefaultThumbTintColor [UIColor whiteColor]
#define kDefaultThumbBorderColor [UIColor colorWithWhite: 0.9 alpha:1.0]
//Appearance - Layout
//Size of knob with respect to the control - Must be a multiple of 2
#define kKnobOffset 2.0
#define kKnobTrackingGrowthRatio 1.2 //Amount to grow the thumb on press down
#define kDefaultPanActivationThreshold 0.7 //Number between 0.0 - 1.0 describing how far user must drag before initiating the switch
//Appearance - Animations
#define kDefaultAnimationScaleLength 0.10 //Length of time for the thumb to grow on press down
#define kDefaultAnimationSlideLength 0.25 //Length of time to slide the thumb from left/right to right/left
#define kSwitchTrackContrastViewShrinkFactor 0.00
版权所有 2012 Kieran Lafferty
允许任何人免费获取本软件和相关文档(“软件”)的副本,用于不受限制地处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可或销售软件副本,并允许将软件提供给他人进行处理,前提是满足以下条件
软件的所有上述版权声明和权限声明应包含在所有副本或软件的重要部分中。
软件按“现状”提供,不提供任何明示或暗示的保证,包括但不限于适销性和针对特定目的的适用性的保证,以及非侵犯性的保证。在任何情况下,作者或版权持有者均不对任何索赔、损害或其他责任承担责任,无论这种责任是因合同、侵权或其他行为引起的,无论该行为是在软件发布之前、期间或之后发生的,还是与软件的使用或任何与之相关的行为有关。