2016-07-05 23 views
3

如何在stackView中正确动画datePicker外观/消失?目前,我试着像这样:Animate DatePicker在StackView中隐藏/显示

UIView.animateWithDuration(0.3, animations: { 
    self.datePickerView.hidden = !self.datePickerView.hidden 
}) 

这会导致隐藏动画的问题 - 这很好,然后开始在年底datePickerView在哪里日期选择器被顶闪烁一点点。有什么建议么?

回答

3

我有同样的问题,解决这样说:

  • 把你的选择器的视图(我们称之为pickerContainerView)
  • 设置一个216高度约束你pickerContainerView(选择器默认高度)
  • 设置约束优先级为999安静“UISV隐藏”约束警告
  • 添加“龙头”,“尾随”,并从您选择器“中心垂直”约束到pickerContainerView
  • 的pickerContainerView的动画隐藏:

    UIView.animateWithDuration(0.3, animations: { 
        self. pickerContainerView.hidden = !self. pickerContainerView.hidden 
    }) 
    

Views tree

+0

我试过这个解决办法,但我不喜欢的动画。 datePicker高度不会减少,它会在延迟后消失,这很奇怪。 –

0

使用容器,以便容纳选择器和设置clipsToBounds =真正为我工作。

我正在使用PureLayout,但它也应该与IB一起工作。

startRangePickerContainer = UIView() 
startRangePickerContainer.clipsToBounds = true 
startRangePickerContainer.backgroundColor = UIColor.cyan 
stackView.addArrangedSubview(startRangePickerContainer) 
startRangePickerContainer.autoPinEdge(toSuperviewEdge: .leading) 
startRangePickerContainer.autoSetDimension(.height, toSize: 216) 
startRangePickerContainer.autoPinEdge(toSuperviewEdge: .leading) 
startRangePickerContainer.autoPinEdge(toSuperviewEdge: .trailing) 

startRangePicker = UIDatePicker() 
startRangePickerContainer.addSubview(startRangePicker) 
startRangePicker.autoCenterInSuperview() 

要动态:

UIView.animate(withDuration: 0.3, animations: { 
    self.startRangePickerContainer.isHidden = !self.startRangePickerContainer.isHidden 
})