的动态位置我有一个奇怪的问题:IOS - 的UIButton
我动态设置在任何viewDidLoad中或ViewDidAppear一些按钮的位置(想他们两者)和手动设置尺寸。然后,无论何时按下按钮,我都会更改按钮的框架。但即使当我设置了原来的一个 - 他们不在屏幕上的相同位置,但他们看起来有点“移动了一些PX”。在2分之132
self.twoTeamsBtn = [[UIButton alloc] init];
self.twoTeamsBtn.frame = CGRectMake(156/2, (94/2), selected2Image.size.width, selected2Image.size.height);
self.threeTeamsBtn = [[UIButton alloc] init];
self.threeTeamsBtn.frame = CGRectMake(331/2, (132/2), unselected3Image.size.width, unselected3Image.size.height);
self.fourTeamsBtn = [[UIButton alloc] init];
self.fourTeamsBtn.frame = CGRectMake(505/2, (132/2), unselected4Image.size.width, unselected4Image.size.height);
所以,twoTeams是二分之九十四(Y)和你,我附上代码和sceenshot:
viewDidAppear。两幅图像的高度相同。 (selected2与selected3相同,unselected3与unselected3相同,依此类推)。
然后我点击的方法里面,我有:
if (button.tag == self.twoTeamsBtn.tag) {
self.threeTeamsBtn.frame = CGRectMake(331/2, (132/2), self.threeTeamsBtn.frame.size.width, self.threeTeamsBtn.frame.size.height);
self.fourTeamsBtn.frame = CGRectMake(505/2, (132/2), self.fourTeamsBtn.frame.size.width, self.fourTeamsBtn.frame.size.height);
self.twoTeamsBtn.frame = CGRectMake(156/2, (94/2), selected2Image.size.width, selected2Image.size.height);
[self.threeTeamsBtn setImage:unselected3Image forState:UIControlStateNormal];
[self.twoTeamsBtn setImage:selected2Image forState:UIControlStateNormal];
[self.fourTeamsBtn setImage:unselected4Image forState:UIControlStateNormal];
} else if (button.tag == self.threeTeamsBtn.tag) {
self.threeTeamsBtn.frame = CGRectMake(331/2, (94/2), selected3Image.size.width, selected3Image.size.height);
self.fourTeamsBtn.frame = CGRectMake(505/2, (132/2), self.fourTeamsBtn.frame.size.width, self.fourTeamsBtn.frame.size.height);
self.twoTeamsBtn.frame = CGRectMake(156/2, (132/2), self.twoTeamsBtn.frame.size.width, self.twoTeamsBtn.frame.size.height);
[self.threeTeamsBtn setImage:selected3Image forState:UIControlStateNormal];
[self.twoTeamsBtn setImage:unselected2Image forState:UIControlStateNormal];
[self.fourTeamsBtn setImage:unselected4Image forState:UIControlStateNormal];
} else if (button.tag == self.fourTeamsBtn.tag) {
self.threeTeamsBtn.frame = CGRectMake(331/2, (132/2), self.threeTeamsBtn.frame.size.width, self.threeTeamsBtn.frame.size.height);
self.fourTeamsBtn.frame = CGRectMake(505/2, (94/2), selected4Image.size.width, selected4Image.size.height);
self.twoTeamsBtn.frame = CGRectMake(156/2, (132/2), self.twoTeamsBtn.frame.size.width, self.twoTeamsBtn.frame.size.height);
[self.threeTeamsBtn setImage:unselected3Image forState:UIControlStateNormal];
[self.twoTeamsBtn setImage:unselected2Image forState:UIControlStateNormal];
[self.fourTeamsBtn setImage:selected4Image forState:UIControlStateNormal];
}
截图如下:
所以,如果你在第二个图片中看到,按钮2和按钮4不在同一层,尽管它们的帧是相同的。在第三个中,第二个和第三个在同一个水平上。
这就像原来的132/2例如,不像以后的设置一样。
我错过了什么吗?
你似乎只是移动的按钮。为了避免这种问题,你有没有考虑过用翻译动画变换属性?这样回到原始状态只是使用身份变换的问题。 – TwoStraws
@TwoStraws你能举个例子吗?即使我在移动按钮,我也不明白为什么他们不能回到原来的位置,而且他们似乎处于不同的高度? – ghostrider
试试这个:'btn.transform = CGAffineTransformMakeTranslation(0,-50)'然后'btn.transform = CGAffineTransformIdentity'把它放回去。 – TwoStraws