类似于UIStepper/UISlider...UISwitch继承自UIControl,他的用法与UIStepper/UISlider...非常类似,也相对少点。
UISwitch(开关)####
//UISwitch的大小是确定的不能进行修改 51*31
let switchOne = UISwitch(frame:CGRect(x:10.0, y:100.0, width:0.0,height: 0.0))
self.view.addSubview(switchOne)
//switchOne.backgroundColor = UIColor .yellow;
//设置打开状态背景颜色
switchOne.onTintColor = UIColor.brown
//设置关闭状态的背景颜色
switchOne.tintColor = UIColor.orange
//开关快的颜色
switchOne.thumbTintColor = UIColor.red
//设置开关状态
switchOne.setOn(true, animated: true)
//添加按钮事件
switchOne.addTarget(self, action: #selector(ViewController.switchOneValueChanged(sender:)), for: UIControlEvents.valueChanged)
//状态改变之后的执行方法
func switchOneValueChanged(sender:UISwitch) {
print("我是一个帅哥,你信不?value=%d",sender.isOn)
}
另外,针对
switchOne.onImage = UIImage(named:"1")
switchOne.offImage = UIImage(named:"2")
//开关状态图标设置无效问题,我查阅了苹果官方文档,文档给出的解释。
iOS 7之后直接设置了switch 的on image和off image图片,为什么运行没有效果
UISegmentedControl(分段选择控件)####
创建和选择后的事件监听
//分段选项显示
let items = ["见哥1","见哥2",UIImage(named:"1")!] as [Any]
//初始化对象
let segmentedControl = UISegmentedControl(items:items)
//设置位置
segmentedControl.center = self.view.center
//当前选中下标
segmentedControl.selectedSegmentIndex = 1
//添加事件
segmentedControl.addTarget(self, action: #selector(segmentedControlChanged), for: UIControlEvents.valueChanged)
//添加
self.view.addSubview(segmentedControl)
//选择点击后的事件
func segmentedControlChanged(sender:UISegmentedControl) {
print(sender.selectedSegmentIndex)
print(sender.titleForSegment(at: sender.selectedSegmentIndex))
}
添加删除选项
UISegmentedControl每个选项的宽度在默认情况下会根据选项的个数自动分配,而个数在初始化控件之后可以添加和删除
//添加图片选项
segmentedControl.insertSegment(with: UIImage(named:"2"), at: 0, animated: true)
//添加文字选项
segmentedControl.insertSegment(withTitle: "见哥0", at: 1, animated: true)
//移除制定下标的选项
segmentedControl.removeSegment(at: 1, animated: true)
//移出所有segment
segment.removeAllSegments()
此外,我们还可以对一些显示信息进行修改,例:
//颜色设定
segmentedControl.tintColor = UIColor.red
//获取颜色
var segmentColor = segment.tintColor
//显示文字修改
segmented.setTitle("swfit", forSegmentAt:1)
//获取某一个下标下的标题
var title = segment.titleForSegmentAtIndex(1)
//修改选项图片
segmented.setImage(UIImage(named:"icon"), forSegmentAt:2)
//获取某一个下标下得图片
var image = segment.imageForSegmentAtIndex(2)
//修改选项内容偏移位置
segmented.setContentOffset(CGSize(width:10, height:7), forSegmentAt:1)
刚刚说到UISegmentedControl每个选项的宽度在默认情况下会根据选项的个数自动分配,但是有时候根据项目情况的需要,我们也是可以手动来进行设置/获取的。
//设置指定下标选项的宽度
segmentedControl.setWidth(10, forSegmentAt: 1)
//获取某一个下标segment的宽度
var width = segment.widthForSegmentAtIndex(2)
//是否根据segment的内容改变segment的宽度
segment.apportionsSegmentWidthsByContent = true
分段选择控件在点击之后一直处于选中状态,除非点击其他分段,才恢复。 momentary属性用来设置是否一直保持选中状态,当设置为YES时,点击选中,但一会就是恢复到正常状态。
segment.momentary = true;