我有一個視圖,當我想要改變它的位置時,鍵盤顯示,我使用UIKeyboardWillShowNotification委託更新的位置,並在IOS 7設備完美的工作,但當我嘗試在IOS 8設備上運行它,然後查看不重新定位,幀被更新,因爲我可以在日誌中看到它。IOS 8設置視圖框架不工作
下面是我的代碼
-(void) keyboardWillShow:(NSNotification*) notification{
@autoreleasepool {
CGRect frame = _loginFrame.frame;
frame.origin.y-=200;
DLog(@"login frame %@ ",NSStringFromCGRect(frame));
[UIView animateWithDuration:0.25 animations:^{
[_loginFrame setFrame:frame];
}];
}
}
但是,當我嘗試在dispatch_after動畫阻止其動畫到新的位置
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[UIView animateWithDuration:0.25 animations:^{
[_loginFrame setFrame:frame];
}];
});
任何想法,爲什麼幀不是無dispatch_after動畫到新位置?
謝謝!
注:它看起來像SETFRAME:方法是行不通的,不知道爲什麼,我已經創建了一個基本的ios 8應用程序來測試這個
2014年9月11日18:59:54.836 KeyboardCheck [31215:1451974]鍵盤顯示 2014-09-11 18:59:54.837 KeyboardCheck [31215:1451974] 舊框架 {{60,269},{200,30}} 2014-09-11 18: 59:54.837 KeyboardCheck [31215:1451974] 更新幀{{60,169},{200,30}} 2014-09-11 18:59:55.33 9 KeyboardCheck [31215:1451974] 完成 塊框{{60,269},{200,30}} 2014-09-11 18:59:55.822 KeyboardCheck [31215:1451974] keyboard hide 2014-09-11 18:59:55.822 KeyboardCheck [31215:1451974] 舊幀{{60,269},{200,30}} 2014年9月11日18:59:56.324 KeyboardCheck [31215:1451974] 完成 塊框{{60,269},{200,30}}
是否使用自動佈局? – Fogmeister 2014-09-11 14:29:12
如果'dispatch_after'工作,大部分是由您使用自動佈局引起的。正確的做法是更新約束條件而不是設置框架。 – 2014-09-11 14:34:24
是的我使用自動佈局,但我沒有在IOS 7中的這個問題,約束被設置爲左,右,底部間距 – 2014-09-11 14:57:23