我试图做一个自底向上的UIPickerView组件,首先创建一个容器视图,而不是实际视图,然后在容器视图中添加一个选择器视图。我将此视图的y位置设置为1690。如果按下按钮,它将以类似的动画向上移动。
func createPicker(sender: UIButton)
{
if(isPickerViewOpened == false){
pickerView.reloadAllComponents()
shadowImageView.alpha = 0.6
UIView.animateWithDuration(0.5, animations: { () -> Void in
self.pickerContainer.center = CGPointMake(self.pickerContainer.center.x, self.pickerContainer.center.y - 1000)
})
isPickerViewOpened = true
}
}
但是,当DidSelectRow函数起作用时,该视图将返回其原始位置。
我的DidSelectRow函数:
func pickerView(pickerView: UIPickerView!, didSelectRow row: Int, inComponent component: Int)
{
urunCesitButton.setTitle("\(urunCesitAd[row])", forState: .Normal)
urunKodu = urunCesitKod[row]
urunAd = urunCesitAd[row]
urunFiyat = urunCesitFiyat[row]
urunAdLabel.text = urunAd
urunFiyatLabel.text = "\(urunFiyat) TL"
shadowImageView.alpha = 0
scrollerView.userInteractionEnabled = true
decreaseButtonOutlet.userInteractionEnabled = true
urunAdet.userInteractionEnabled = true
increaseButtonOutlet.userInteractionEnabled = true
}
我尝试使用endEditing或resignFirstResponder()来解决该问题,但它不起作用。有人也问了这个问题,但他没有得到答案。
最佳答案
您的问题很可能归结于与pickerContainer相关的约束。您是否在界面构建器中使用偏移量创建了选择器?选择时,布局可能正在重做,并且将其移回其默认位置。您可能最好为左侧和顶部位置添加约束,然后为该约束设置动画。这将确保其停留在约束定义所在的位置。您可以通过将CTRL从约束中拖到.h文件中来为约束创建IBOutlet。然后设置每个约束的常数值的动画。
参见How do I animate constraint changes?
关于ios - DidSelectRow后PickerView消失,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29604311/