我正在寻找在iOS中创建日期滚动器的方法。我正在尝试通过sun-sat days
在日视图中重现在本机日历应用中找到的滚动条,并能够左右滚动以查看其他星期。
实现此目标的最佳方法是什么?
我尝试用滑动手势操作ContainerView
,然后以为我会用新的替换container
中的视图(相同视图的副本,但前一周/后一周是日期)。但是,当添加新视图时,它将接管整个视图,而不仅仅是视图容器。
应用程序的设计是:
NavViewController-> ViewController->容器-> SwipeViewController
在View Controller内部,我在滑动操作方法中具有以下功能:
let viewController = self.storyboard!.instantiateViewController(withIdentifier: "swipeViewControllerStoryboard") as! SwipeViewController
self.swipeContainer.addSubview(viewController.view)
答案 0 :(得分:0)
我不确定我是否理解得很好,但是创建自定义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的委托和数据源设置为您的CustomPicker实例。
我敢肯定有很多方法可以做到这一点,这可能是一个hack。也许宁愿找到一种自定义UIDatePicker的方法,但是如果您想使用任何其他数据自定义pickerViews,我会走这条路线。