ios - 如何在ios中创建日期滚动条

标签 ios swift

我想在 iOS 中创建一个日期滚动条。我正在尝试在日 View 中重现 native 日历应用程序中的滚动条,其中包含sun-sat days,并且能够左右滚动以查看其他星期。

实现这一目标的最佳方法是什么?

我尝试过使用滑动手势的 ContainerView,然后我想用新的 View 替换 container 中的 View (同一 View 的副本)但上/下几周的日期)。但是,当添加新 View 时,它会接管整个 View ,而不仅仅是 View 容器。

该应用程序的设计是:

NavViewController -> ViewController -> Container -> SwipeViewController

在 View Controller 内部,我在滑动操作方法中有这个:

let viewController = self.storyboard!.instantiateViewController(withIdentifier: "swipeViewControllerStoryboard") as! SwipeViewController
self.swipeContainer.addSubview(viewController.view)

最佳答案

我不确定我是否理解得很好,但创建自定义 PickerView 或多或少与创建任何其他组件(即 tableViews)相同。创建一个 IBOutlet pickerView。创建继承自 UIPickerView 的类并实现:

UIPickerViewDataSource

func numberOfComponents(in pickerView: UIPickerView) -> Int { 
    return 1 //maybe more?
}

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
    return yourArray.count  
}

UIPickerViewDelegate

func pickerView(_ pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat {
    return (CGFloat)70 
}
func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
    let view = UIView(frame: CGRect(x: 0, y: 0, width: customWidth, height: 100)) //height CGFloat
    //And create your labels here and add to view.addSubView(label)
    //let label = UILabel(frame: CGRect(x: 0, y: 0, width: customWidth, height: 70))
    //...
    //..
    //.

    //use CGAffineTransform and rotate the picker to horizontal 
    view.transform = CGAffineTransform(rotationAngle: 90 * (.pi/180))

    return view
}

返回 ViewController 实例化 CustomPicker。将 pickerView 的委托(delegate)和数据源设置为您的 CustomPicker 实例。

我确信有很多方法可以做到这一点,并且可以是一种破解。也许找到一种自定义 UIDatePicker 的方法,但如果您想使用任何其他数据自定义 pickerViews,我会走这条路。

关于ios - 如何在ios中创建日期滚动条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52077931/

相关文章:

ios - LocationManager不一致

objective-c - 需要在 Xcode 中包含 Accelerate 框架

ios - 如何在 swift 中定义自定义本地化常量

ios - 在 ARKit 水平面上绘制填充多边形

swift - 在异步函数在 Swift 中完成执行后,在尾随闭包之外获取一个完全填充的数组

ios - 在 Swift 中重试 firebase token

ios - 以编程方式从 super View 中删除 View 后更新约束/框架(自动布局)

swift - 如何将 UIPickerview selectRow 重置为默认零行

ios - 如何在整个应用中进行应用内购买? (从多个 View 中删除广告)

ios - Swift 在不点击按钮的情况下执行 segue