iPhoneシミュレータ画面上のUIオブジェクトの位置を計測する方法
-
23-09-2019 - |
質問
紙の上で位置とオフセットを計算しました。コードを作成してデバッグしたところ、期待どおりの結果が得られました。しかし iPhone シミュレーターでは物事が重なっています 約 15 ピクセルずつ増加します。
デバッグを続行するには、UI オブジェクトが画面上の正確な場所を知る必要があります。
ポップアップ検索キーボードと、静的な UISearchBar と動的に追加された UITabBar の間の UITableView のサイズ変更に関連します (テーブル ビューはタブの 1 つに埋め込まれます)。いや、本当に ハードコードされた値を使用したくない 回転や画面サイズの違いによるものです。
どうすればこれを知ることができますか?
- (void)keyboardWasShown:(NSNotification*)aNotification
{
if (self.keyboardShown)
return;
// Get keyboard dimensions
NSDictionary* info = [aNotification userInfo];
NSValue* aValue = [info objectForKey:UIKeyboardBoundsUserInfoKey];
CGSize kbSize = [aValue CGRectValue].size;
NSValue* endValue = [info objectForKey:UIKeyboardCenterEndUserInfoKey];
CGPoint endCenter = [endValue CGPointValue];
CGRect frame = myView.frame;
frame.size.height = endCenter.y - kbSize.height/2 - frame.origin.y;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.2];
myView.frame = frame;
[UIView commitAnimations];
self.keyboardShown = YES;
}
...もう確認できない明らかなバグがある場合に備えてコード...
解決
あなたの最善の策は、おそらくのUIViewのconvertPoint:toView:
です。指定されたビューが配置されている場所を見つけるために、使用します:
CGPoint myPoint = [myView convertPoint:CGPointMake(0, 0) toView:((YourAppDelegate *)[[UIApplication sharedApplication] delegate]).window];
所属していません StackOverflow