1

ユーザーがタップして展開できるこれらのタブがあります。この問題を回避する正しい方法であると判断したため、含まれているビューからタブを削除し、展開時にウィンドウに追加しています。これにより、非常に奇妙なバグが発生したようです。タブが開かれた後、ボタンの通常状態のテクスチャが突然引き伸ばされます。

タブはすべて正常に表示されます

最初のタブが開いて閉じられ、引き伸ばされたテクスチャが表示されます

比較的大規模なロギングを行ったところ、開閉アニメーションの前後で、タブ全体のフレームとそれに囲まれたボタンがまったく同じであることがわかりました。

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

4

2 に答える 2

0

だから私はこれを突き刺します。ユーザーは、カスタムボタンであるタブをタップします。次に、ボタンが強調表示されます。ボタンがこの操作の途中にある間、ボタンは1つのビューからヤンクされ、別のビューに配置されます。

したがって、最初は赤面しますが、ハイライト表示が行われる可能性がある間は、ビューから1つのボタンをヤンクしてウィンドウに追加するのではなく、古いボタンの不透明度を0にアニメーション化して、古いボタンと同じように構成する新しいボタン。したがって、常に新しいボタンを作成し、古いボタンをアニメーション化(そして破棄)することになります。

于 2012-07-31T19:01:09.853 に答える
0

さらにテストを行った結果、問題は私のシミュレーターのみにあるようです。バグは実際のデバイスには表示されません

于 2012-08-07T13:38:18.740 に答える