Swift —UISwitch/UISegmentedControl的使用

类似于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")

//开关状态图标设置无效问题,我查阅了苹果官方文档,文档给出的解释。


Swift —UISwitch/UISegmentedControl的使用_第1张图片
苹果官方文档

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;

你可能感兴趣的:(Swift —UISwitch/UISegmentedControl的使用)