2017-04-06 112 views
2

iOS的10,雨燕3.1動畫效果自動佈局約束不工作

我有一個名爲UIView一個graphPopupUITableViewCell我試圖動畫裏面。基本上,當有人點擊一個圖表時,出現一個彈出窗口,我希望它將其xy設置到位。

除彈出窗口的動畫外,一切正常。下面是它現在的樣子: enter image description here

我從點至點到位想要的彈出窗口幻燈片。這裏是我的代碼:

class TotalCell: UITableViewCell, ChartViewDelegate{ 

    @IBOutlet weak var graphPopup: UIView! 
    @IBOutlet weak var popupConstraintY: NSLayoutConstraint! 
    @IBOutlet weak var popupConstraintX: NSLayoutConstraint! 

    func chartValueSelected(_ chartView: ChartViewBase, entry: ChartDataEntry, highlight: Highlight) { 
    //... 
    graphPopup.isHidden = false 

    //Set new auto layout constraints 
    self.popupConstraintX.constant = highlight.xPx-44 
    self.popupConstraintY.constant = highlight.yPx+18 

    //Animate (which does nothing) 
    UIView.animate(withDuration: 1.0, animations: { 
     self.graphPopup.layoutIfNeeded() 
    }) 
    } 
} 

任何想法我可能做錯了什麼?如果我完全刪除動畫位,它的行爲方式相同,但我知道動畫正在被調用。

任何想法?

+1

有兩個問題 - 您是否嘗試過在'self'上調用'layoutIfNeeded()',放入'graphPopup'?第二 - 你在哪裏隱藏彈出窗口?你有沒有試圖保持它始終可見?這很奇怪,但也許動畫發生時,它不可見? – Losiowaty

回答

5

嘗試self.layoutIfNeeded()而不是self.graphPopup.layoutIfNeeded()