UIPickerViewとツールバー(216 + 44)のカスタムビューがあります。初期化時(viewDidLoad)に、このカスタムビューは、次のコードを使用して画面の下にプッシュされます。tabBarが存在する場合の奇妙な位置付けの問題
CGPoint newOrigin;
newOrigin.x = pickerViewOutlet.frame.size.width/2;
newOrigin.y = self.view.frame.size.height + ((pickerViewOutlet.frame.size.height)/2);
NSLog(@"%f,%f",self.view.frame.size.height,(pickerViewOutlet.frame.size.height)/2);
pickerViewOutlet.center = CGPointMake(newOrigin.x, newOrigin.y);
ボタンをクリックすると、次のコードを使用してこのビューがプルアップされます。
[self.view bringSubviewToFront:pickerViewOutlet];
NSLog(@"tabbar %f",self.tabBarController.tabBar.frame.size.height);
CGPoint showOrigin;
showOrigin.x = pickerViewOutlet.frame.size.width/2;
showOrigin.y = pickerViewOutlet.center.y - pickerViewOutlet.frame.size.height;
//self.tabBarController.tabBar.frame.size.height ;
NSLog(@"showpicker %f,%f",pickerViewOutlet.center.y,pickerViewOutlet.frame.size.height);
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDuration:0.5];
pickerViewOutlet.center=CGPointMake(showOrigin.x, showOrigin.y);
[UIView commitAnimations];
[pickerCtrlOutlet reloadAllComponents];
これは問題なく動作します。しかし、これは上記のコードをに変更された場合にコードがしかし
showOrigin.y = pickerViewOutlet.center.y - pickerViewOutlet.frame.size.height - self.tabBarController.tabBar.frame.size.height ;
ように変更しても、ページの一番下のタブバーコントローラの存在下で(図の一部は、タブバーの下で)動作しません
showOrigin.y = pickerViewOutlet.center.y - pickerViewOutlet.frame.size.height - self.tabBarController.tabBar.frame.size.height - 90;
ビューがタブバーのすぐ上にある場合は、完全に機能します。