簡體   English   中英

如何移動UIView,但相對於Superview保持其內容位置不變?

[英]How can I move a UIView, but leave its content positions unchanged relative to the superview?

一個UIView有2個圖像作為子視圖,並且剪輯范圍設置為yes。

我想在動畫塊中移動UIView,但是使子視圖不能與父視圖一起移動。 如果視圖是向右移動50個點,則將看到更多的第二張圖像,而看不到第一張圖像。

我可以手動移動視圖,並更新與新視圖位置相對的子視圖位置,但是我無法弄清楚如何在一個塊中實現相同的目的。

我認為您遇到的限制與以下事實有關:UIView Animation塊在后台使用Core Animation,而Core Animation設置了一個“表示”層的動畫,該層是已安排動畫的原始視圖/層的副本上。 因此,在塊的動畫期間,表示層的位置會發生變化,但是模型視圖的位置保持不變。

由於您提到可以手動更新視圖位置(和相反方向的子視圖位置)以獲得所需的效果,因此請考慮在動畫調度時間創建一個NSTimer,該時間每秒運行60次(以嘗試捕獲每個動畫幀),只需查詢表示層的當前位置(由動畫本身+指定為動畫參數的任何特殊計時功能設置),然后執行工作以更新基礎模型以匹配該位置。

您應該能夠通過以下方式查詢動畫層的位置:

yourUIView.layer.presentationLayer.frame.origin

然后,將完成塊添加到動畫中,使計時器無效。

在訪問視圖的layer屬性之前,必須將

QuartzCore.framework

干杯,

暫無
暫無

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

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