[英]Animating UIView frame doesn't respect constraints?
我想要實現的是,當我點擊按鈕時,對框架進行動畫處理以調整其大小,以使底線位置不會改變並且高度會減小。 這部分正在發生。 我還希望上標簽隨框架的上邊界向下移動而下標簽保持原樣。 因此,我在IB中設置了約束,以使下部標簽的垂直空間為20像素,優先級為1000。
- (IBAction)tapTap:(id)sender {
//[self.containerView layoutIfNeeded];
[UIView animateWithDuration:1.5 animations:^{
CGRect rect = CGRectOffset(self.containerView.frame, 0, 30);
rect.size.height -= 30;
self.containerView.frame = rect;
//[self.containerView layoutIfNeeded];
} completion:NULL];
}
較低的標簽也在設置動畫,不會停留在原處。 在嘗試了不起作用的layoutIfNeeded
之后,我的最佳猜測是,我無法在為框架設置動畫時依賴約束。 如果這是真的,那將是什么解決方案?
自動版式的第一條規則:不要觸摸框架(或中心)。
看起來您已經找到了答案,但是執行此操作的方法是保留對要更改的約束的引用。 例如,如果要上下移動視圖,則存儲一個垂直約束以設置視圖上的垂直位置。 現在,當您為該約束設置動畫時,視圖將隨之對其進行動畫處理。
self.topConstraint.constant = 50;
// etc...
您可以通過CTRL拖動約束來創建屬性引用,就像使用按鈕,標簽等一樣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.