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}}

编辑

此外,按下按钮时的纹理保持正常,只有按钮的“正常”状态才会出现纹理混乱。

编辑2

这是一个基本示例的 git 存储库的所有墨水,它仍然重现了我的问题:

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

4

2 回答 2

0

所以让我试一试。用户点击选项卡,这是一个自定义按钮。然后该按钮突出显示。当按钮在此操作中途时,它会从一个视图中拉出并放入另一个视图中。

因此,乍一看,我建议您不要在有任何突出显示的机会时将一个按钮从视图中拉出并将其添加到窗口中,而是将旧按钮的不透明度设置为 0,并添加一个您希望它配置与旧按钮相同的新按钮。因此,您将不断创建新按钮并为旧按钮设置动画(然后丢弃)。

于 2012-07-31T19:01:09.853 回答
0

经过一些进一步的测试,问题似乎只出在我的模拟器上。该错误不会出现在实际设备上

于 2012-08-07T13:38:18.740 回答