2015-05-06 20 views
2

我有一個消息傳遞視圖,用戶可以在其中選擇要添加到消息中的圖釋。我在鍵盤上方有一個用戶可以輸入消息的欄。它看起來是這樣的:H:|-[UIButton: emoticon]-[UITextField]-[UIButton: send]|如何使用AutoLayout滑動內容

現在我試圖通過將其左邊約束設置爲constraint.constant -= screenWidth來滑動所有這些,但是這似乎不起作用,因爲我得到了大量「無法滿足約束」消息在日誌中沒有一個移動。我還有一個問題,就是不知道把表情符號放在哪裏(這是一個UIButton,每個表情符號都是)。

有沒有辦法以簡單的方式做到這一點?

回答

2

如果我明白你在做什麼(你對細節的看法很稀疏),你的問題是你的約束仍然固定在開始和結束。

在滾動任何東西之前,您可能需要刪除最後一項的正確約束。

這就是說,我通常在這種情況下做的事情就是包裝所有應該在普通UIView中滾動的東西。然後我可以保持它們的內部約束相同,只有UIView固定在其超視圖的左側和右側。要滾動,我只需在當前寬度上添加一個寬度約束,刪除正確的約束,然後從左側約束的常量中減去以將其從屏幕上滾出。

該額外視圖爲我提供了一個保證,即所有內容都保持其在動畫開始時的大小和位置,甚至可以允許我優化動畫(例如,在將其滾動出來之前可以對視圖進行光柵化處理,以及UIKit然後只需移動一層)。