لماذا تعتبر Uiwindow طفلًا وأيضًا من الوالدين لـ Uview؟

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

سؤال

يقول مرجع Uikit إن Uiview عبارة عن طبقة رائعة من Uiwindow ، ولكن على الرغم من هذا النسب ، فإن Uiwindow يدير بالفعل uiviews. هذا يبدو غير عادي بالنسبة لي.

هل يعرف أي شخص ما هي أهمية هذا من حيث تصميم البرمجيات؟

شكرا جزيلا.

تعديل:
قرأت الفقرة ذات الصلة في دليل برمجة iPhone. ومع ذلك ، لم أستطع رؤية سبب قيامهم بالعكس: دع uiwindow يكون والدا Uiview. يجب أن يكون هناك شيء أجبر Apple على تصميم التسلسل الهرمي للصف بهذه الطريقة.

هل كانت مفيدة؟

المحلول

من http://developer.apple.com/iphone/library/documentation/iphone/conceptual/iphoneosprogrammingguide/windowsandviews/windowsandviews.html

أحد الأشياء التي قد يجدها مطورو Mac OS X غير عادي حول فئة UiWindow هو ميراثها. في Mac OS X ، فئة الوالدين من Nswindow هي nsresponder. في iPhone OS ، فئة الوالدين لـ UiWindow هي Uiview. وبالتالي ، في iPhone OS ، فإن النافذة هي أيضًا كائن عرض. على الرغم من نسبتها ، فأنت عادةً ما تعامل Windows في iPhone OS كما تفعل في Mac OS X. أي أنك عادة لا تعالج الخصائص المتعلقة بعرض كائن UiWindow مباشرة.

تعديل:

إن UIVIEW هو شيء عام (يوفر طرقًا شائعة تستخدمها لإنشاء جميع أنواع المشاهدات والوصول إلى خصائصها.) في حين أن UIWINDOW أكثر واقعية (تحدد الفئة الكائنات التي تدير وتنسيق Windows الذي يعرضه التطبيق على الشاشة.)

أعلم أنه غامض بعض الشيء وأعتقد أن Apple فقط ستعرف السبب الدقيق لهذا التسلسل الهرمي.

http://developer.apple.com/iphone/library/documentation/uikit/reference/uiwindow_class/uiwindowclassreference/uiwindowclassreference.html#//apple_ref/occ/cl/uiwindow

تحدد فئة UiWindow الكائنات (المعروفة باسم Windows) التي تدير وتنسيق Windows الذي يعرضه تطبيق على الشاشة. تتمثل وظيفتي النافذة الرئيسية في توفير منطقة لعرض طرق العرض وتوزيع الأحداث على طرق العرض.

وhttp://developer.apple.com/iphone/library/documentation/uikit/reference/uiview_class/uiview/uiview.html#//apple_ref/occ/cl/uiview

توفر فئة UIVIEW طرقًا شائعة تستخدمها لإنشاء جميع أنواع المشاهدات والوصول إلى خصائصها. على سبيل المثال ، ما لم يكن لدى الفئة الفرعية التهيئة المعينة الخاصة بها ، يمكنك استخدام initWithFrame: طريقة لإنشاء طريقة عرض. تحدد خاصية الإطار أصل وحجم طريقة العرض في إحداثيات الإشراف. أصل نظام الإحداثيات لجميع المشاهدات هو في الزاوية العلوية اليسرى.

يتم ترتيب كائنات Uiview داخل كائن UiWindow ، في التسلسل الهرمي المتداخل للآراء الفرعية. تسمى الكائنات الأصل في العرض الهرمي عرض الإشراف ، ويطلق على الأطفال عمليات الرؤية الفرعية. يطالب كائن View بأن منطقة مستطيلة من مراقبة الإشراف المرفقة لها ، وهي مسؤولة عن كل الرسم داخل تلك المنطقة ، وهي مؤهلة لتلقي الأحداث التي تحدث فيها أيضًا. وجهات نظر الأخوة قادرة على التداخل دون أي مشاكل ، مما يسمح بوضع عرض معقد.

نصائح أخرى

لأنه بعد ذلك ، سيكون لكل uiview خصائص وسلوك (موروثة) والتي لا معنى لها إلا للنوافذ. هذا مجرد خطأ.

العكس أمر منطقي أكثر: تضيف نافذة السلوك أعلى وجهات النظر. لذلك يمكن أن يرسم ، والحدود ، وتحتوي على طرق عرض أخرى ، وما إلى ذلك ، لكنه يمتد هذا ، على سبيل المثال ، معرفة كيفية تقديم الشاشة.

في MacOS X ، Nswindows ليست وجهات نظر. أنها تحتوي على "طريقة عرض الجذر" ، تسمى contentView. Windows iOS هي تكوين Nswindow + عرض الجذر الخاص بها.

يجب أن يكون لكل UIVIEW العادي بما في ذلك طريقة عرض الجذر للنافذة الرئيسية طريقة عرض للوالدين. يرث UiWindow Uiview لأداء واجبات عرض الوالدين في عرض هرمي. UiWindow ليست عرضًا منتظمًا ولديها تطبيقاتها الخاصة للطرق من واجهة Uiview.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top