当DatePicker隐藏单元格时移动滚动视图

时间:2017-11-26 10:31:26

标签: ios swift uidatepicker

我有一个集合视图,如果我单击一个日期选择器出现的元素。现在,如果被日期选择器隐藏但没有运气,我一直试图滚动我的视图。任何帮助,将不胜感激。 这是我用于创建带工具栏的DatePicker的代码

func createUIPickerView(){

    //:Creating a date picker and the toolbar
    picker = UIDatePicker(frame: CGRect(x: 0, y: self.view.frame.size.height-216, width: self.view.frame.size.width, height: 216))
    picker.backgroundColor = UIColor.white
    picker.datePickerMode = .time
    toolBar = UIToolbar(frame: CGRect(x: 0, y: self.view.frame.size.height - 50 - 216, width: self.view.frame.size.width, height: 50))
    toolBar.barStyle = .default
    toolBar.barTintColor = UIColor.white
    toolBar.isTranslucent = true
    let doneButton = UIBarButtonItem(title: "Done", style: .plain, target: self, action: #selector(CalenderVC.doneClick))
    let spaceButton = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
    let cancelButton = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(CalenderVC.cancelClick))
    toolBar.setItems([cancelButton, spaceButton, doneButton], animated: false)
    toolBar.isUserInteractionEnabled = true
    self.view.addSubview(toolBar)
    self.view.addSubview(picker)

}

1 个答案:

答案 0 :(得分:1)

我无法看到您的集合视图的代码,但是您:

  1. 将集合视图上的底部约束更改为具有等于拾取器高度的常量,然后调用setNeedsLayout或layoutIfNeeded来移动它
  2. 使用contentInset
  3. 将等于pciker高度的填充添加到集合视图的底部
  4. 使用setContent(offset:animated:)滚动集合视图,其数量等于 - 选择器高度。
  5. 我通常投票给1,但可能是2和3的组合,如果你不知道你不需要插入,可能只有2;这取决于你想要达到的效果。请注意,这些方法位于UIScrollView上,它是UICollectionView的父类。

    编辑: 哦,还有一个你可以做的,因为你没有使用datePicker作为textView的inputView:将你的集合视图嵌入到栈视图中,然后将选择器添加到stackview的排列子视图中。这将自动推送集合视图,因此您不必混淆约束。