0
キーボードと同じようにアニメーションに日付ピッカーを表示したいとします。それを実現する方法はありますか?日付ピッカーのキーボードのようなアニメーションが速いイオスで表示される
これまでのところ私のコードですが、私は奇妙なアニメーションを作成するコンテナビュー(影をシミュレートするもの)だけを取得しています。
@IBAction func ShowPicker(sender: AnyObject) {
let ContainerHeight = CGFloat(264) //320, 216
let PickerHeight = CGFloat()
//container for datepicker and simulates a shadow
shadowView = UIView()
//Use with transitionWithView
//shadowView.frame = CGRectMake(0, 0, self.view.frame.width, self.view.frame.height)
//Use with animateWithDuration
shadowView.backgroundColor = UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 0.5)
let tap = UITapGestureRecognizer(target: self, action: #selector(touchOutSide))
shadowView.addGestureRecognizer(tap)
let datePicker : UIDatePicker = UIDatePicker()
let datePickerContainer = UIView()
//datePickerContainer.frame = CGRectMake(0.0, self.view.frame.width, self.view.frame.width, 320.0)
datePickerContainer.frame = CGRectMake(0.0, self.view.frame.height - ContainerHeight, self.view.frame.width, ContainerHeight)
//Nota ese 320 debe ser la altura natural del picker mas la altura de los botones
datePickerContainer.backgroundColor = UIColor.whiteColor()
let pickerSize : CGSize = datePicker.sizeThatFits(CGSizeZero)
//datePicker.frame = CGRectMake(0.0, 0.0, self.view.frame.width, 216.0)
datePicker.frame = CGRectMake(0.0, 0.0, self.view.frame.width, ContainerHeight)
//datePicker.clipsToBounds = true
datePicker.setDate(NSDate(), animated: true)
datePicker.maximumDate = NSDate()
//datePicker.backgroundColor = UIColor(red: 0.0, green: 0.0, blue: 1.0, alpha: 0.5)
datePicker.datePickerMode = UIDatePickerMode.DateAndTime
datePicker.addTarget(self, action: "dateChangedInDate:", forControlEvents: UIControlEvents.ValueChanged)
//datePickerContainer.addSubview(datePicker)
let pickerHolder = UIView()
pickerHolder.frame = CGRectMake(0.0, 20, self.view.frame.width, ContainerHeight)
pickerHolder.addSubview(datePicker)
datePickerContainer.addSubview(pickerHolder)
let doneButton = UIButton()
doneButton.setTitle("Ok", forState: UIControlState.Normal)
doneButton.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal)
doneButton.backgroundColor = UIColor.lightGrayColor()
doneButton.addTarget(self, action: Selector("dismissPicker:"), forControlEvents: UIControlEvents.TouchUpInside)
doneButton.frame = CGRectMake(self.view.frame.width/2, 0.0, self.view.frame.width/2, 37.0)
let btnCancel = UIButton()
btnCancel.setTitle("Cancel", forState: UIControlState.Normal)
btnCancel.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal)
btnCancel.backgroundColor = UIColor.lightGrayColor()
btnCancel.addTarget(self, action: Selector("cancelTap"), forControlEvents: UIControlEvents.TouchUpInside)
btnCancel.frame = CGRectMake(0.0, 0.0, self.view.frame.width/2, 37.0)
datePickerContainer.addSubview(doneButton)
datePickerContainer.addSubview(btnCancel)
shadowView.addSubview(datePickerContainer)
// Makes weird animations:
//UIView.transitionWithView(self.view, duration: 0.9, options: UIViewAnimationOptions.TransitionCrossDissolve, animations: {self.view.addSubview(self.shadowView)}, completion: nil)
self.view.addSubview(shadowView)
UIView.animateWithDuration(2, animations: {() -> Void in self.shadowView.frame = CGRect(x: 0.0, y: 0.0, width: self.view.frame.width, height: ContainerHeight)})
}