我想在 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/