كيف تكتشف عندما تغير حجم UIView؟
-
23-09-2019 - |
سؤال
انا املك UIViewController
يتم تهيئة ذلك بإطار صحيح ، ولكن في مكان ما في الكود الخاص بي ، يتم تشويه الإطار وأواجه صعوبة في معرفة مكان.
في مثل هذه المواقف ، عادة ما يكون ذلك مفيدًا watch
متغير في مصحح الأخطاء ، ومع ذلك ، ليس لدي أي طريقة للوصول إلى خاصية الإطار-> View-> في عرضي المتغير ، لأنه ليس متغيرًا ، إنه خاصية (بشكل مدهش بما فيه الكفاية)
يظهر الحفر في عرض Uiview في المتغيرات بعض الأشياء ولكن لا شيء يمكنني ربطه بالإطار ، ربما اعتقدت أن ذلك سيكون في layer
لكنها ليست كذلك.
هل هناك أي طريقة لمراقبة التغييرات في واجهة برمجة التطبيقات الخاصة؟ لا أعتقد ذلك ، نظرًا لأن المتغيرات "مخفية" بشكل أساسي ، وبالتالي لا يمكنك تحديد ما بالضبط watch
.
بدلاً من ذلك ، ما هو النهج الآخر الذي يمكنني استخدامه؟ لقد جربت بالفعل الفئة الفرعية Uiview ، حيث قمت بتعيين وجهة نظر UiviewController الخاصة بي للإشارة إلى هذه الفئة الفرعية وكسر طريقة setFrame ولكن لا يبدو أنها تعمل.
تحرير: لقد نجحت طريقة UIVIEW في الفئات الفرعية ، واضطررت فقط إلى ضبط العرض للإشارة إلى الفئة الفرعية الاختبار الخاصة بي viewDidLoad
وليس init
طريقة. ترك هذا السؤال مفتوحًا لأنني لست متأكدًا مما إذا كانت هذه هي أفضل طريقة للتعامل مع هذا النوع من المشكلة ...
المحلول 2
لقد اكتشفت أن هذا يمكن القيام به باستخدام مراقبي القيمة الرئيسية.
نصائح أخرى
الفئة الفرعية الخاصة بك العرض الذي تريد تتبعه وإعادة كتابة طريقة setFrame:
@implementation MyTableView
- (void)setFrame:(CGRect)frame;
{
NSLog(@"%@", frame);
[super setFrame:frame];
}
@end
ثم استخدم مصحح الأخطاء لإضافة نقطة توقف إليه وتحقق من موعد استدعاؤه. في النهاية ، سترى متى يتم تغيير الإطار ومن أين يأتي التغيير.
يمكنك إنشاء ivar ، view2 ، وقام فقط بتعيينه في عرضك في الخاص بك loadView
طريقة. من شأن ذلك أن يمكّنك من مشاهدته كمتغير عادي.