簡體   English   中英

將視圖設置為動畫后,如何將其恢復為原始狀態?

[英]How can I return a view to its original state after animating it?

我有一個矩形視圖,其中從xib設置了兩個標簽(一個靜態,一個動態)。 當用戶觸摸視圖時,我將其收縮並隱藏標簽(使用UIView-animateWithDuration: animations:

有什么方法可以保存僅視圖的上下文並在以后返回?

我知道有UIGraphicsGetCurrentContext但是文檔只是說: 返回我猜測是整個視圖的圖形上下文 (多么糟糕的文檔!)

似乎這可能和CALayers通用,但這只是一個UIView方法,我不確定它CALayers在實現中使用CALayers

不,您無法輕松保存和還原整個視圖和子視圖的內容。 UIGraphicsGetCurrentContext可用於拍攝UIView的圖片,但不能保存子視圖的位置。

而是為每個子視圖保留兩組框架,然后通過設置mySubview.frame在它們之間切換。

因此,請回答您的一些問題:

首先, UIView的核心是CALayer的包裝。 您可以通過視圖的layer屬性訪問基礎CALayer 如果您要進行大量動畫工作,則可能會在某些時候發現它非常有用。 用iOS的術語來說,“圖形上下文”基本上是存儲有關當前繪圖狀態的信息的地方。

UIView為動畫提供的便利方法( animateWithDuration等)會在動畫完成后自動將視圖的框架,邊界等設置為其新的動畫值。 因此,您將希望保留要更改的任何值,以便在需要時可以將其設置為動畫。 請注意,這可能不只是框架-如果您要更改Alpha值,還需要將其保留下來,以此類推。

您可以嘗試其他選項,但是它們涉及使用稍微低一點的Core Animation API。 這個現有的StackOverflow問題有一個很好的總結: 具有Autoreverse的UIView動畫

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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