كيفية قياس موضع كائنات واجهة المستخدم على شاشة محاكاة iPhone

StackOverflow https://stackoverflow.com/questions/2146952

سؤال

لقد حسبت المواقف والإزاحة على الورق. لقد كتبت رمزًا وتصحيح أخطاء أنني أحصل على نتائج متوقعة. لكن على iPhone Simulator ، تتداخل الأشياء بحوالي 15 بكسل.

لمواصلة تصحيح الأخطاء ، أحتاج إلى معرفة مكان وجود كائنات واجهة المستخدم على الشاشة بالضبط.

تتعلق بلوحة مفاتيح البحث المنبثقة وتغيير حجم uitableview بين uisearchbar الثابتة و uitabbar المضافة ديناميكيًا (يتم تضمين عرض الجدول في إحدى علامات التبويب). لا ، أنا حقا لا تريد استخدام أي قيم متشددين دوران الاستحقاق وأحجام الشاشة المختلفة.

كيف يمكنني معرفة هذا؟

- (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];
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top