按钮拉伸bug

时间:2012-07-31 14:27:52

标签: objective-c ios

我有这些标签,用户可以点按并展开。由于我认为是避免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

2 个答案:

答案 0 :(得分:0)

所以让我对此进行一次尝试。用户点击选项卡,这是一个自定义按钮。按钮然后突出显示。当按钮位于此操作的中间时,它会从一个视图中拉出并放入另一个视图中。

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

答案 1 :(得分:0)

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