iOS動畫程式設計-AutoLayout動畫[ 2 ]Inspecting and animating constraints

NO IMAGE
1 Star2 Stars3 Stars4 Stars5 Stars 給文章打分!
Loading...

介紹

通過視覺化方法,使用outlets來控制約束,實現動畫確實非常方便也非常容易,但是有時你不可能把UI上所有元素都做outlet,這會有巨大的工程量。也許你希望通過程式碼來增減、調整約束
由於這些原因,你將需要在執行時檢查已存在的約束,並且用程式碼讓它們動起來。

Demo

接著我們上一個Demo,在actionToggleMenu()方法中新增

for con in titleLabel.superview!.constraints { print(" -> \(con.description)\n")
}

通過這麼一段程式碼,我們遍歷了menu bar view的所有約束並輸出在了命令列
圖片描述
這樣的輸出顯然很混亂,那我們看出哪個我們要做調整的約束呢
比如我們如下的約束:
UIView:...centerX == UILabel:...'Select Item'.centerX
這顯然是UIView UILabel之間的約束、它的description也包括了label的current text
centerX讓我們判斷出來,這個約束與horizontally centers有關,這樣就能知道這個約束是做什麼的了

Animating UILabel constraints

隨後在actionToggleMenu(_:)方法中,判斷開關狀態後,新增如下程式碼:

    for constraint in titleLabel.superview!.constraints {
if constraint.firstItem as? NSObject == titleLabel &&
constraint.firstAttribute == .CenterX {
constraint.constant = isMenuOpen ? -100.0 : 0.0
continue
}
}

這樣我們便找到了我們要修改的約束並且改變了它的值
圖片描述

相關文章

IOS開發 最新文章