我一直在努力與我的UIView子類動畫的方式看似小毛刺。我有如下設置:UIView調整動畫故障
self.contentMode = UIViewContentModeRedraw;
self.contentStretch = CGRectMake(0.5f, 0.5f, 0.0f, 0.0f);
該視圖基本上是一個矩形,它有一個3像素的筆畫。因爲我希望視圖在調整大小時不扭曲,所以我有contentStretch屬性指示視圖的中間部分。問題在於,變形發生在它不斷增長的時候,但是它在收縮時變得平滑。
好像我的動畫塊很簡單;我有單獨的成長和萎縮。這裏的成長塊:
[UIView animateWithDuration:0.5 animations:^{
CGRect newRect = CGRectMake(20, 100, 200, 70);
[titleView setFrame:newRect];
}];
這是相當困難的崗位描述,所以我認爲組裝只隔離那些有關這部分的測試案例工程。如果有人想看看?
http://dl.dropbox.com/u/2798577/ViewResizeTest2.0.zip
你可以看到當你點擊「成長」按鈕,動畫前視圖的左側的「毛刺」。雖然在這裏清晰可見,但在我的真實項目中情況更糟糕。
我不確定這是否是我的代碼中的錯誤或框架的問題?希望它的前...
謝謝, 亞倫。
更新 已經收到雅各布的充分的反饋,我已經回到我的應用程序並刪除了contentMode設置爲UIViewContentModeRedraw,指出像他那樣,它會運行的drawRect每次動畫時間,也許,最初的框架小故障的一部分。所以現在動畫是平滑的,但它動畫到錯誤的位置,擠壓雙方。我已經更新了鏈接項目,以更準確地反映我的應用程序中發生的事情。
如果我不得不猜測,看起來contentStretch屬性沒有完成它的工作。它根據我的指令調整整個事物的大小,而不是根據CGRect區域進行調整。任何人都可以確認我是否正確使用它?
謝謝你的雅各布。我認爲你已經解決了部分問題。但是,似乎在我的示例應用程序中顯示出一個弱點。我已經更新了該應用程序,並且在我的問題中添加了關於此的註釋。 –