Stworzyłem niestandardowy datapicker. Chcę to pokazać od dołu do top.But, że nie pokazuje, że pokazuje się od góry do dołu.

Oto kod.

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!)
2
TechChain 19 luty 2018, 12:50

3 odpowiedzi

Najlepsza odpowiedź

Najpierw do animacji musi być dodany przed animacją, po drugie, nie wolno ponownie załadować zbieracza z NIB wewnątrz animacji

         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

        })
1
Sh_Khan 19 luty 2018, 10:01

Z jakąś fajną animacją możesz wykonać następujące czynności ...

 //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

    }
0
Mahendra 19 luty 2018, 10:02

Najpierw : Dodaj datePicker w widoku nadrzędnym przed animowaniem. Chyba że to zrobisz, nie będzie widoczne.
sekunda : Y Saberter Y nie jest dynamiczny w bloku animacji. Powinien być oryginalny y - wysokość zbieracza .

Ogólny kod:

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

        })
0
Nitish 19 luty 2018, 10:09