2012-07-31 80 views
1

我有這些選項卡,用戶可以點擊並展開。正如我決定是避免this問題的正確方法,我將從包含視圖中刪除標籤,並在展開時將它們添加到窗口中。這似乎導致了一個非常奇怪的錯誤:按鈕正常狀態的紋理在打開標籤後突然被拉伸。按鈕拉伸錯誤

以前

tabs all appear normal

first tab has been opened and closed, showing stretched texture

我已經做了一些比較廣泛的日誌記錄,即前後打開和關閉動畫之後,該框架顯示整個標籤和其包含的按鈕完全相同:

2012-07-31 10:08:33.835 Project[1937:1c103] Button:{{0, 0}, {133, 25}} 
2012-07-31 10:08:33.836 Project[1937:1c103] Tab:{{0, 177.333}, {133, 25}} 
2012-07-31 10:08:34.340 Project[1937:1c103] Tab done:{{118, 777.5}, {133, 202.5}} 
2012-07-31 10:08:34.341 Project[1937:1c103] Button done:{{0, 0}, {133, 25}} 

這個問題如果我從它包含視圖中刪除選項卡,並把它添加到窗口,而不是隻發生。如果我在其包含視圖中爲選項卡設置動畫,紋理不會混亂。

我在這裏完全損失。

這裏是我創建的標籤的紋理和按鈕的代碼:在這一點上

tabImg = [[UIImage imageNamed:@"tab_stretchable"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 15, 25, 15)]; 
CGRect tabFrame = frame; 
tabFrame.origin.x = 0; 
tabFrame.origin.y = 0; 
tabButton = [[UIButton alloc] initWithFrame:tabFrame]; 
[tabButton setBackgroundImage:tabImg forState:UIControlStateNormal]; 
[tabButton addTarget:self action:@selector(tabPressed:) forControlEvents:UIControlEventTouchUpInside]; 
[self addSubview:tabButton]; 

frame{{0, 177.333}, {133, 25}}

編輯

而且,紋理當按鈕被按下仍保持正常,這只是按鈕的「正常」狀態,其具有混亂的紋理。

EDIT2

這裏是人油墨仍然重現我的問題一個基本的例子的一個Git倉庫:

https://github.com/starphoenix/TabBug2.git

+0

兩條評論 - 如果您在動畫過程中刪除gui元素並將其添加到另一個視圖,可能會發生令人討厭的事情。在任何情況下,如果你可以旋轉一個簡單的項目來顯示這個項目,然後把它放在github或DropBox上(作爲zip),那麼我和其他人可以採取措施尋找問題。 – 2012-07-31 14:37:48

+0

@DavidH可以理解,以避免在動畫中間移動視圖,但是我移動視圖然後觸發動畫 – 2012-07-31 14:38:27

+0

我只是覺得有些東西在窗口渲染視圖時發生改變。玩弄代碼比試圖找出這個更容易。考慮到你的分數,你不是業餘愛好者:-) - 所以如果你找不到它,其他凡人都難以找到。這就是說有時讓人們重新審視一些事情會導致進步。 – 2012-07-31 14:41:30

回答

0

經過一些進一步測試後,問題似乎只出現在我的模擬器。該錯誤不會出現在實際設備上

0

所以讓我來刺這個。用戶點擊選項卡,這是一個自定義按鈕。該按鈕然後突出顯示。當按鈕在這個操作的中途時,它從一個視圖中被抽出並被放置到另一個視圖中。

所以我第一次臉紅,我建議你不要將一個按鈕從視圖中拉出來,並將其添加到窗口中,同時有可能突出顯示正在進行,但將舊按鈕的不透明度設置爲0 ,並添加一個新的按鈕,您希望它的配置與舊的一樣。所以你會不斷創建新的按鈕並動畫(然後丟棄)舊按鈕。