2011-08-15 105 views
3

我試圖揭示(通過動畫)UIView。具體而言,我想顯示視圖的中心部分,然後慢慢地顯示它的外邊緣(有點像拉回窗簾)。以編程方式顯示UIView

我的第一個嘗試是簡單地將邊界設置爲更小,並將其設置爲視圖框架的完整大小,但這並沒有達到預期的效果,因爲通過更改邊界,我也正在改變框架。

如果我正在嘗試做的事聽起來不可能(至少不是簡單的方式),至少我希望能夠有一些方法來使主視圖的子視圖相對於屏幕,而不是他們的父視圖,因爲父母調整大小(這會產生類似的效果)。

任何想法?

謝謝

-Matt

回答

6

這絕對有可能。你需要做的是

  • 爲查看你的動畫,setAutoresizesSubviews:NOsetClipsToBounds:YES
  • 將視圖的邊界(不是框架)設置爲零大小和原點在矩形中心點的矩形,您希望視圖在完全顯示時(視圖自己的座標系中)佔據矩形。換句話說,startBounds.origin.x應該等於endBounds.size.width的一半,並且類似地爲y
  • 通過設置其視圖center(在父視圖的座標系中)來定位視圖。
  • 在動畫塊中,將視圖的邊界更改爲零原點和全角大小。
  • 在動畫的完成塊中,您可能需要再次使用setAutoresizesSubviews:YES

您可能還需要將視圖的自動調整大小的遮罩設置爲完全靈活(彈簧但不支持struts),具體取決於調整大小時觸發的其他佈局。

+0

這是正確的,謝謝你的迅速和徹底的迴應。 – mag725

0

聽起來像是你想改變它的剪裁。一種便宜的(代碼明智的)方法是將視圖插入到父視圖中(以autoresizing set爲中心),設置父視圖剪輯其子視圖,然後爲父視圖框添加動畫。