https://github.com/Boris-Em/BEMCheckBox
https://github.com/Boris-Em/BEMCheckBox
BEMCheckBox
BEMCheckBox is an open source library making it easy to create beautiful, highly customizable, animated checkboxes for iOS.
Table of Contents
Project Details
Learn more about the BEMCheckBox project, licensing, support etc.
Requirements
- Requires iOS 7 or later. The sample project is optimized for iOS 9.
- Requires Automatic Reference Counting (ARC).
- Optimized for ARM64 Architecture.
License
See the License. You are free to make changes and use this in either personal or commercial projects. Attribution is not required, but highly appreciated. A little "Thanks!" (or something to that affect) is always welcome. If you use BEMCheckBox in your app, please let us know!
Support
Join us on Gitter if you need any help or want to talk about the project.
Sample App
The iOS Sample App included with this project demonstrates one way to correctly setup and use BEMCheckBox. It also offers the possibility to customize the checkbox within the app.
React Native
BEMCheckBox can be used with React Native: React-Native-BEMCheckBox
Xamarin
BEMCheckBox can also be used with Xamarin: XPlugins.iOS.BEMCheckBox
Getting Started
It only takes a few simple steps to install and setup BEMCheckBox to your project.
Installation
CocoaPods
The easiest way to install BEMCheckBox is to use CocoaPods. To do so, simply add the following line to your Podfile:
pod 'BEMCheckBox'
Carthage
Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks.
Run carthage update after adding BEMCheckBox to your Cartfile to build the framework. Drag the built BEMCheckBox.framework into your Xcode project.
Manually
Finally, you can install BEMCheckBox manually. Simply drag and drop the Classes folder into your Xcode project. When you do so, make sure to check the "Copy items into destination group's folder" box.
Setup
Setting up BEMCheckBox to your project couldn't be more simple. It is modeled after UISwitch. In fact, you could just replace instances of UISwitch by BEMCheckBox in your project!
Here are the steps to follow to get everything up and running:
- Import
"BEMCheckBox.h"to the header of your view controller:
#import "BEMCheckBox.h"
- BEMCheckBox can either be initialized programatically (through code) or with Interface Builder (Storyboard file). Use the method that makes the most sense for your project.
Programmatical Initialization
Just add the following code to your implementation (usually in the viewDidLoad method of your View Controller).
BEMCheckBox *myCheckBox = [[BEMCheckBox alloc] initWithFrame:CGRectMake(0, 0, 50, 50)];
[self.view addSubview:myCheckBox];
Interface Builder Initialization
1 - Drag a UIView to your UIViewController.
2 - Change the class of the new UIView to BEMCheckBox.
3 - Select the BEMCheckBox and open the Attributes
Inspector. Most of the customizable properties can easily be set from
the Attributes Inspector. The Sample App demonstrates this capability.
Documentation
All of the methods and properties available for BEMCheckBox are documented below.
Enabling / Disabling the Checkbox
The on Property
Just like UISwitch, BEMCheckBox provides the boolean property on that allows you to retrieve and set (without animation) a value determining wether the BEMCheckBox object is on or off. Defaults to NO.
Example usage:
self.myCheckBox.on = YES;
setOn:animated:
Just like UISwitch, BEMCheckBox provides an instance method setOn:animated: that sets the state of the checkbox to On or Off, optionally animating the transition.
Example usage:
[self.myCheckBox setOn:YES animated:YES];
Reloading
The instance method reload lets you redraw the entire checkbox, keeping the current on value.
Example usage:
[self.myCheckBox reload]
Group / Radio Button Functionality
BEMCheckBoxes can easily be grouped together to form radio button functionality. This will automatically manage the state of each checkbox in the group, so that only one is selected at a time, and can optionally require that the group has a selection at all times.
self.group = [BEMCheckBoxGroup groupWithCheckBoxes:@[self.checkBox1, self.checkBox2, self.checkBox3]];
self.group.selectedCheckBox = self.checkBox2; // Optionally set which checkbox is pre-selected
self.group.mustHaveSelection = YES; // Define if the group must always have a selection
To see which checkbox is selected in that group, just ask for it:
BEMCheckBox *selection = self.group.selectedCheckBox;
To manually update the selection for a group, just set it:
self.group.selectedCheckBox = self.checkBox1;
Delegate
BEMCheckBox uses a delegate to receive check box events. The delegate object must conform to the BEMCheckBoxDelegate protocol, which is composed of two optional methods:
didTapCheckBox:
Sent to the delegate every time the check box gets tapped, after its properties are updated (on), but before the animations are completed.animationDidStopForCheckBox:
Sent to the delegate every time the check box finishes being animated.
Customization
BEMCheckBox is exclusively customizable though properties.
The following diagram provides a good overview:
Apparence Properties
lineWidth - CGFloat
The width of the lines of the check mark and box. Defaults to 2.0.
`hideBox` - BOOL
BOOL to control if the box should be hidden or not. Setting this
property to `YES` will basically turn the checkbox into a check mark.
Defaults to `NO`.
boxType - BEMBoxType
The type of box to use. See BEMBoxType for possible values. Defaults to BEMBoxTypeCircle.
tintColor - UIColor
The color of the box when the checkbox is Off.
onCheckColor - UIColor
The color of the check mark when it is On.
onFillColor - UIColor
The color of the inside of the box when it is On.
onTintColor - UIColor
The color of the line around the box when it is On.
Animations
animationDuration - CGFloat
The duration in seconds of the animations. Defaults to 0.5.
onAnimationType - BEMAnimationType
The type of animation to use when the checkbox gets checked. Defaults to BEMAnimationTypeStroke. See BEMAnimationType bellow for possible values.
offAnimationType - BEMAnimationType
The type of animation to use when the checkbox gets unchecked. Defaults to BEMAnimationTypeStroke. See BEMAnimationType bellow for possible values.
BEMAnimationType
The possible values for onAnimationType and offAnimationType.
BEMAnimationTypeStroke
BEMAnimationTypeFill
BEMAnimationTypeBounce
BEMAnimationTypeFlat
BEMAnimationTypeOneStroke
BEMAnimationTypeFade
https://github.com/Boris-Em/BEMCheckBox的更多相关文章
- 转载请注明出处: https://github.com/qiu-deqing/FE-interview
转载请注明出处: https://github.com/qiu-deqing/FE-interview Table of Contents generated with DocToc FE-inter ...
- https://github.com/chenghuige/tensorflow-exp/blob/master/examples/sparse-tensor-classification/
https://github.com/chenghuige/tensorflow-exp/blob/master/examples/sparse-tensor-classification/ ...
- fatal: could not read Username for 'https://github.com': No such file or directo
Git push origin master报错 fatal: could not read Username for 'https://github.com': No such file or di ...
- 结合个人经历总结的前端入门方法 (转自https://github.com/qiu-deqing/FE-learning)
结合个人经历总结的前端入门方法 (https://github.com/qiu-deqing/FE-learning),里面有很详细的介绍. 之前一直想学习前端的,都不知道怎么下手都一年了啥也没学到, ...
- (2016 年) githup 博客地址 : https://github.com/JMWY/MyBlog
githup 博客地址 : https://github.com/JMWY/MyBlog
- MJExtension的使用:https://github.com/CoderMJLee/MJExtension
MJExtension能做什么? MJExtension是一套字典和模型之间互相转换的超轻量级框架 MJExtension能完成的功能 字典(JSON) --> 模型(Model) 模型(Mod ...
- MBProgressHUD框架的使用:https://github.com/jdg/MBProgressHUD
MBProgressHUD是一个开源类库,实现了各种样式的提示框, 下载地址:https://github.com/jdg/MBProgressHUD,然后把两个MBProgressHUD.h和MBP ...
- https://github.com/akullpp/awesome-java
java stack https://github.com/akullpp/awesome-java
- https://github.com/oneuijs/You-Dont-Need-jQuery
https://github.com/oneuijs/You-Dont-Need-jQuery
随机推荐
- jmeter的JDBC Request接口测试
Jmeter操作Mysql 测试计划添加.jar包 mysql-connector-java-5.1.7-bin.jar用于使Jmeter可以读取Mysql: 线程组添加 JDBC Connectio ...
- nginx报错:Permission denied
vi /etc/selinux/config #SELINUX=enforcing #注释掉 #SELINUXTYPE=targeted #注释掉 SELINUX=disabled #增加 :wq! ...
- 打造个人的vimIDE
环境说明 系统版本:centos7.Ubuntu16 vim版本:7.4 安装git工具 整体说明:本文的vim配置是针对Linux的单个系统用户,python的自动补全使用的是 jedi-vim 插 ...
- BZOJ1509: [NOI2003]逃学的小孩 (树形DP)
题意:给一棵树 选三个点A,B,C 求A到B的再从B到C的距离最大值 需要满足AB的距离小于AC的距离 题解:首先树上的最大距离就想到了直径 但是被样例误导了TAT BC两点构成了直径 我一开始以为A ...
- Linux常用命令——关机与重启命令
1.shutdown命令 shutdown [选项] 时间 --使用shutdown进行关机或重启会正确保存正在使用的服务,其他命令有一定的危险性,建议最好使用shutdown命令进行关机重启 选项: ...
- 浅谈es6 promise
本文是借鉴于ac黄的博客. 接触es6也有几个月了,貌似没有系统的去学习过它,总是用到什么,查查什么.今天就说下es6中的promise对象. 先说说promise解决了什么问题? 写前端的同学都经常 ...
- 数据结构与算法(3)- C++ STL与java se中的vector
声明:虽然本系列博客与具体的编程语言无关.但是本文作者对c++相对比较熟悉,其次是java,所以难免会有视角上的偏差.举例也大多是和这两门语言相关. 上一篇博客概念性的介绍了vector,我们有了大致 ...
- Gym - 101550A(Artwork 倒序+并查集)
题目: 思路: 1.对输入数据离线,先把所有的黑线都画出来,统计一下剩余的白色连通块的个数,dfs过程将一个连通块放到一个集合中. 2.倒着往前消去黑线,如果当前的块A是白块就看他的四周有没有白块:有 ...
- python实现给定一个数和数组,求数组中两数之和为给定的数
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数.你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nums = [2, 7, 11, 15], target = ...
- Linux学习笔记记录(四)