我有一个我无法解释的问题。
我有一个带有视图的 viewController。这个视图包含一个 UIbutton 和一个工具栏。因为 toolBar 是一个参数栏,我不希望它一直出现在我的视图中。所以我决定用一个按钮来显示它。
我正在使用界面构建器来设计我的视图。该按钮将位于左上角,工具栏位于视图上方。(原点:0,-44)
我已将按钮链接到显示工具栏的 IBAction 函数:
- (IBAction)showOptions:(id)sender {
if([parametersBar isHidden])
{
[parametersBar setHidden:NO];
[UIView animateWithDuration:0.2
animations:^{
[parametersBar setTransform:CGAffineTransformMakeTranslation(0, 44)];
}
];
}
}
(在viewDidLoad中parametersBar设置为隐藏)
这工作正常。
但是我们在这里:我的按钮现在被工具栏隐藏了!!那么翻译它呢?
不可能让我的两个元素都转换为 44 像素!我以为我做错了什么。但即使只是让按钮移动,翻译的结果也不是预期的。
- (IBAction)showOptions:(id)sender {
if([parametersBar isHidden])
{
[parametersBar setHidden:NO];
[UIView animateWithDuration:0.2
animations:^{
[parametersButton setTransform:CGAffineTransformMakeTranslation(0, 44)];
}
];
}
}
我在动画前后放了一些 NSLog:它们写了我的按钮的预期位置,但在我的设备屏幕上,它不在正确的位置。并且在这两个元素上执行翻译会导致工具栏不在正确的位置。
我在我的 .xib 中使用自动布局。会不会是这些问题的原因?对要求此转换的按钮执行转换是否有影响?
(顺便说一句,在 3GS 上运行相同的代码并没有相同的效果:按钮跳转,并使预期的翻译从它所在的位置(上面 44px)到它的原始位置)
好吧,这个问题很难解释,但我希望清楚。如果您需要更精确的理解,请随时向我询问更多详细信息。