我试图做一个自底向上的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/

10-10 20:53