簡體   English   中英

動畫UIView框架不遵守約束?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM