美文网首页iOS Developer
Swift —UISwitch/UISegmentedContr

Swift —UISwitch/UISegmentedContr

作者: 见哥哥长高了 | 来源:发表于2017-03-16 10:14 被阅读2900次

    类似于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;
    

    相关文章

      网友评论

        本文标题:Swift —UISwitch/UISegmentedContr

        本文链接:https://www.haomeiwen.com/subject/ifsdnttx.html