我有这些标签,用户可以点击并展开。由于我认为这是避免此问题的正确方法,因此我正在从包含视图中删除选项卡,并在它们展开时将它们添加到窗口中。这似乎导致了一个非常奇怪的错误:在打开选项卡后,按钮正常状态的纹理突然被拉伸。
前
后
我做了一些比较广泛的日志记录,显示在打开和关闭动画之前和之后,整个选项卡的框架及其封闭的按钮完全相同:
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 存储库的所有墨水,它仍然重现了我的问题: