美文网首页
swift pickerView的简单使用以及模拟无限滚动老虎机

swift pickerView的简单使用以及模拟无限滚动老虎机

作者: MrLSX | 来源:发表于2018-09-14 15:18 被阅读0次
先上效果图: QQ20180914-145457.gif

所谓的无限滚动就是把component里的Row设置的足够多

在这确定键是暂停计时器以及滚动,取消键是继续计时器

1.完成如下视图布局


image.png

2.为picker添加代理和数据源协议

picker.dataSource = self
picker.delegate = self

//父视图继承相关代理UIPickerViewDelegate,UIPicke rViewDataSource
//设置测试数据(我用的二维数组)
let items = [["a1","a2","a3","a4"],["a1","a2"],["a1","a2","a3"]]   

3.完成相关代理方法

// 是否循环滚动
let isCircularly = true

//picker有几组
func numberOfComponents(in pickerView: UIPickerView) -> Int {
    return items.count
}
//每组有多少个  
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    for (index,item) in items.enumerated() {
        if component == index{
            if isCircularly{
                return item.count * 1000
            }else{
                return item.count
            }
        }
    }
    return 0
}

//每个显示的内容
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    if isCircularly{
        return items[component][row % items[component].count]
    }else{
        return items[component][row]
    }
}

这样就可以显示并且无限滑动了

4.老虎机自动滚动

//添加计时器
var time:Timer!
time = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(timer), userInfo: nil, repeats: true)
    time.fire()
 //滚动相关代码
@objc func timer() {
    for index in 0..<items.count {
        var temp = picker.selectedRow(inComponent: index)
        temp -= 1
        picker.selectRow(temp, inComponent: index, animated: true)
    }
}

//为确定键添加点击事件
@objc func clickSure(){
   //暂停计时器
    time.fireDate = Date.distantFuture
    for index in 0..<items.count {
        //打印选中的Row的索引
        if isCircularly{
            print((picker.selectedRow(inComponent: index))%items[index].count)
        }else{
            print(picker.selectedRow(inComponent: index))
        }
    }
}

//为取消键添加点击事件
@objc func clickCancle() {
    time.fireDate = Date.distantPast
}

如果要使各个列滚动方向不同,可以在time()方法里面添加随机事件(+= 或者 -=)

相关计时器的简单用法请看:https://www.jianshu.com/p/185eadc38ff0

git库:https://github.com/Liushaungxi/LearnSwift(List4)

相关文章

  • swift pickerView的简单使用以及模拟无限滚动老虎机

    所谓的无限滚动就是把component里的Row设置的足够多 在这确定键是暂停计时器以及滚动,取消键是继续计时器 ...

  • 无限滚动与分页设计

    无限滚动 无限滚动技术,简单地向下滚动就可以不断刷新页面加载更多的内容,现在很多移动端使用的方式。 一、优点 1....

  • 酱油02-小控件和手势

    小控件的简单使用 pickerView UIGestureRecognizer/PKHUD插件

  • 录像时间轴 TimeAxis

    录像时间轴 TimeAxis 录像时间轴,无限滚动 可扩展自定义绘制方法 使用物理引擎UIDynamic模拟实现U...

  • pickerView

    01-pickerView简单使用 一.UIPickerViewDataSource // 返回有多少列- (NS...

  • swift:无限图片轮播器

    swift:无限图片轮播器 图片轮播器用处很广,什么广告投放呀,新闻头条滚动之类的,都是使用它。出于学习的目的用s...

  • PickerView控件在Fragment中的正确使用

    PickerView控件在Fragment中的正确使用 我在fragment使用PickerView遇到的bug ...

  • 监听滚动条滚动到底部

    扩展UIScrollView 参考文章:Swift - RxSwift的使用详解68(监听滚动条滚动到底部的行为:...

  • UIPickerView

    目录:1、单个PickerView的使用2、两个PickerView联动3、PickerView标题显示自定义 1...

  • 简单无限滚动的实现

    在使用elementUI组件库的时候,用到了无限滚动这个功能。我没有看源码,直接在网上学习了下实现的思路,然后自己...

网友评论

      本文标题:swift pickerView的简单使用以及模拟无限滚动老虎机

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