كيفية قياس موضع كائنات واجهة المستخدم على شاشة محاكاة iPhone
-
23-09-2019 - |
سؤال
لقد حسبت المواقف والإزاحة على الورق. لقد كتبت رمزًا وتصحيح أخطاء أنني أحصل على نتائج متوقعة. لكن على 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];
لا تنتمي إلى StackOverflow