![](/img/trans.png)
[英]AVAudioPlayer continues to play after segue and relaunches on return to original view controller - how can I stop it?
[英]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.