我有一個問題,我無法解釋。問題與UIButton上的CGAffineTransformMakeTranslation
我有一個視圖的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)];
}
];
}
}
(parametersBar被設置爲隱藏在viewDidLoad中)
該作品精細。
但在這裏我們是:我的按鈕現在是由工具欄隱藏! 那麼翻譯呢?
不可能讓我的兩個元素的翻譯44px的!我以爲我做錯了什麼。但即使只是讓按鈕移動,翻譯的結果也不是預期的結果。
- (IBAction)showOptions:(id)sender {
if([parametersBar isHidden])
{
[parametersBar setHidden:NO];
[UIView animateWithDuration:0.2
animations:^{
[parametersButton setTransform:CGAffineTransformMakeTranslation(0, 44)];
}
];
}
}
我已經把一些NSLogs前後動畫後:他們寫我的按鈕的預期位置,但我的設備屏幕上,它是不是在正確的地方。 然後在這兩個元素上執行翻譯會導致工具欄沒有放在正確的位置。
我在我的.xib中使用Autolayout。這可能是這些問題的原因嗎? 是否對請求這種轉換的按鈕執行轉換有影響?
(順便說一句,在3GS上運行相同的代碼有不一樣的效果:按鈕跳躍,並使得從那裏是上面(44px)到原來的位置預計翻譯)
好,這個問題很難解釋,但我希望能夠清楚。 如果您需要更多的精確度來了解,請不要猶豫,問我更多的細節。