【问题标题】:Unable to show date picker from top to bottom?无法从上到下显示日期选择器?
【发布时间】:2018-02-19 09:50:49
【问题描述】:

我创建了一个自定义日期选择器。我想从下到上显示它。但它没有显示它是从上到下显示。

这里是代码。

let frame:CGRect = CGRect(x: 0, y: 600, width: self.view.frame.width, height: self.view.frame.height/3)
        self.datePicker = CustomDatePicker.instanceFromNib(frame: frame) as? CustomDatePicker
        self.datePicker?.configureDatePicker()
        datePicker?.customPickerDelegate = self
        UIView.animate(withDuration: 1.5, animations: {

            DILog.print(items: "Updated Y is \(self.view.frame.height - self.view.frame.height/3)")
            let frame:CGRect = CGRect(x: 0, y: 300, width: self.view.frame.width, height: self.view.frame.height/3)
            self.datePicker = CustomDatePicker.instanceFromNib(frame: frame) as? CustomDatePicker

        }, completion: { (value) in

        })
        self.view.addSubview(self.datePicker!)

【问题讨论】:

  • 你怎么能期望 UIView 上的动画还不是子视图?应该关闭
  • 这是简单的一行解决方案从动画块中删除 self.datePicker = Custo... 并直接设置框架,在执行动画之前只需添加子视图

标签: ios swift xcode datepicker


【解决方案1】:

首先必须在动画之前添加动画选择器,其次您不能在动画中再次从笔尖加载选择器

         let frame:CGRect = CGRect(x: 0, y: 600, width: self.view.frame.width, height: self.view.frame.height/3)
         self.datePicker = CustomDatePicker.instanceFromNib(frame: frame) as? CustomDatePicker

        self.datePicker?.configureDatePicker()
        datePicker?.customPickerDelegate = self
        self.view.addSubview(self.datePicker!)
        UIView.animate(withDuration: 1.5, animations: {

            DILog.print(items: "Updated Y is \(self.view.frame.height - self.view.frame.height/3)")

            self.datePicker.frame = CGRect(x: 0, y: 300, width: self.view.frame.width, height: self.view.frame.height/3)

        }, completion: { (value) in

        })

【讨论】:

    【解决方案2】:

    通过一些很酷的动画,您可以执行以下操作...

     //configure date picker and add it
    
    //animate it in this way
        UIView.animate(withDuration: 1.5, delay: 0, usingSpringWithDamping: 0.5, initialSpringVelocity: 1, options: .curveEaseIn, animations: {
    
            self.datePicker.frame = CGRect(x: 0, y: 300, width: self.view.frame.width, height: self.view.frame.height/3)
    
        }) { (isDone) in
    
        }
    

    【讨论】:

      【解决方案3】:

      First:在动画之前在父视图中添加 datePicker。除非您这样做,否则它将不可见。
      第二:您的选择器的 y 在动画块中不是动态的。它应该是原始 y - 选择器的高度

      整体代码:

      let frame:CGRect = CGRect(x: 0, y: 600, width: self.view.frame.width, height: self.view.frame.height/3)
      self.datePicker = CustomDatePicker.instanceFromNib(frame: frame) as? CustomDatePicker
      self.datePicker?.configureDatePicker()
      datePicker?.customPickerDelegate = self
      self.view.addSubview(self.datePicker!)
      UIView.animate(withDuration: 1.5, animations: {
      
          DILog.print(items: "Updated Y is \(self.view.frame.height -        self.view.frame.height/3)")
          let frame:CGRect = CGRect(x: 0, y: 600 - self.view.frame.height/3, width: self.view.frame.width, height: self.view.frame.height/3)
          self.datePicker = CustomDatePicker.instanceFromNib(frame: frame) as? CustomDatePicker
      
              }, completion: { (value) in
      
              })
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多