1.********复选框*******
/**
复选框
使用: let single = LYBmutipleSelectView.init(frame: CGRect.init(x: 0, y: 0, width: WIDTH, height: 550))
single.titleArr=["one","two","three"]
self.view.addSubview(single)
*/
import UIKit
class LYBmutipleSelectView: UIView {
var selectindexs:[Int]=[]//选中的
//标题数组
var titleArr:[String]=[""]{
didSet{
for i in 0..<titleArr.count{
//组装按钮和label
let singleselectview:UIView=UIView.init(frame: CGRect.init(x: i*100, y:0, width: 100, height: 50))
let rightLbel:UILabel=UILabel.init(frame: CGRect.init(x: 50, y: 0, width: 50, height: 50))
rightLbel.text=titleArr[i]
singleselectview.addSubview(rightLbel)
let leftBtn:UIButton=UIButton.init(frame: CGRect.init(x: 5, y: 5, width: 40, height: 40))
leftBtn.tag=130+i;
leftBtn.setImage(UIImage.init(named: "other"), for: UIControl.State.normal)
leftBtn.addTarget(self, action: #selector(leftBtnClcik), for: UIControl.Event.touchUpInside)
singleselectview.addSubview(leftBtn)
addSubview(singleselectview)
}
}
}
override init(frame: CGRect) {
super.init(frame: frame)
initViews()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func initViews(){
let sureBtn:UIButton=UIButton.init(frame: CGRect.init(x: WIDTH-100, y: 30, width: 100, height: 50))
sureBtn.setTitle("确认", for: UIControl.State.normal)
sureBtn.setTitleColor(UIColor.black, for: UIControl.State.normal)
sureBtn.addTarget(self, action: #selector(sureBtnClcik), for: UIControl.Event.touchUpInside)
addSubview(sureBtn)
}
//确认按钮,根据选中的按钮索引做相应的操作
@objc func sureBtnClcik(){
print("\(selectindexs)")
}
//点击按钮选中或取消
@objc func leftBtnClcik(sender:UIButton){
sender.isSelected = !sender.isSelected
let btnTag:Int=sender.tag-130
if sender.isSelected{//选中
selectindexs.append(btnTag)//吧按钮的索引存储起来
sender.setImage(UIImage.init(named: "center"), for: UIControl.State.normal)
}else {
//删除数组中的元素,采用过滤的方法,swift中没有现成的删除方法
let fiflter:[Int]=selectindexs.filter {
$0 != btnTag
}
selectindexs = fiflter
sender.setImage(UIImage.init(named: "other"), for: UIControl.State.normal)
}
}
}
2。********* 单选框*******
/**
单选框
使用:
let single = LYBSingleselectview.init(frame: CGRect.init(x: 0, y: 0, width: WIDTH, height: 550))
single.titleArr=["one","two","three"]
self.view.addSubview(single)
*/
import UIKit
class LYBSingleselectview: UIView {
var selectindex:Int=0//选中的
var lastbtn:UIButton=UIButton.init()//保存上一个按钮
var selectblock:(Int)->()={(Int)->() in }
//标题数组
var titleArr:[String]=[""]{
didSet{
for i in 0..<titleArr.count{
//组装按钮和label
let singleselectview:UIView=UIView.init(frame: CGRect.init(x: i*100, y: 0, width: 100, height: 50))
let rightLbel:UILabel=UILabel.init(frame: CGRect.init(x: 50, y: 0, width: 50, height: 50))
rightLbel.text=titleArr[i]
singleselectview.addSubview(rightLbel)
let leftBtn:UIButton=UIButton.init(frame: CGRect.init(x: 5, y: 5, width: 40, height: 40))
leftBtn.tag=130+i
leftBtn.setImage(UIImage.init(named: "other"), for: UIControl.State.normal)
leftBtn.addTarget(self, action: #selector(leftBtnClcik(sender:)), for: UIControl.Event.touchUpInside)
singleselectview.addSubview(leftBtn)
addSubview(singleselectview)
}
}
}
override init(frame: CGRect) {
super.init(frame: frame)
initViews()
self.selectblock = {
(index) in
print("\(index)")
}
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func initViews(){
let sureBtn:UIButton=UIButton.init(frame: CGRect.init(x: WIDTH-100, y: 30, width: 100, height: 50))
sureBtn.setTitle("确认", for: UIControl.State.normal)
sureBtn.setTitleColor(UIColor.black, for: UIControl.State.normal)
sureBtn.addTarget(self, action: #selector(sureBtnClcik), for: UIControl.Event.touchUpInside)
addSubview(sureBtn)
}
//确认按钮,根据选中的按钮索引做相应的操作
@objc func sureBtnClcik(){
print("\(selectindex)")
}
//点击按钮选中或取消
@objc func leftBtnClcik(sender:UIButton){
print("左边按钮")
let btnTag:Int=sender.tag-130
sender.isSelected=true
lastbtn.isSelected=false
lastbtn.setImage(UIImage.init(named: "other"), for: UIControl.State.selected)
sender.setImage(UIImage.init(named: "center"), for: UIControl.State.selected)
lastbtn=sender
selectindex = btnTag
self.selectblock(selectindex)
}
}