عرض UiviewController/Uiview على طريقة عرض أخرى
-
03-07-2019 - |
سؤال
أحاول إنشاء وحدة تحكم منتقي مع زر "تم القيام به" الموجود فوقه مباشرة ، لعرضه على نموذج في عرض آخر.
لقد قمت بإنشاء فئة فرعية من UiviewController واستخدام IB لقد أضفت شريط أدوات وعرض منتقي. يبدو هذا جيدًا ومن خلال نسخ الأمثلة في uicatalog ، يمكنني الحصول عليها لعرض القيم المطلوبة ويمكنني الاستماع إلى التحديدات وما إلى ذلك.
alt text http://web.me.com/gareth.davis/so/Settlement_picker_ui.png
في ما سبق قمت بتعيين لون الخلفية للعرض ليكون ألفا 0.0. لقد حاولت أيضًا تعيين ألفا للعرض ، حيث يعرض فقط وجهة نظر شفافة تمامًا.
alt text http://web.me.com/gareth.davis/so/picker_running_in_app.png
ما سبق هو وحدة التحكم في العرض المعروضة على الجزء العلوي من النموذج الخاص بي باستخدام:
[self presentModalViewController:settlementPickerViewController
animated:YES];
بالإضافة إلى محاولة تعيين خصائص ألفا مختلفة من وجهة نظري ، حاولت أيضًا تغيير ارتفاع العرض حتى لا تكون هناك حاجة إلى قسم شفاف ، فإن المشكلة يتم وضعها بعد ذلك في منتصف الشاشة.
المحلول
يبدو أن الحل ليس هو استخدام UIVIEWController بدلاً من ذلك ، فإن UIVIEW مخصص بسيط يقوم بالمهمة بشكل جيد.
لقد استخدمت إعداد لون Haentz في طريقة Awakefromnib:
- (void)awakeFromNib {
picker.delegate = self;
self.backgroundColor = [UIColor clearColor];
}
لاحظ أنه يتعين عليك تنفيذ هذا وعدم استخدام طريقة initWithFrame التي يمنحك قالب X-Code كأشاهد مفادقي محكومة NIB لا تستخدم initWithFrame (من وثائق Apple).
نصائح أخرى
ربما لا أحصل عليها ، لكنني لا أفهم بالضبط ما هي المشكلة هنا. في لقطة الشاشة السفلية ، هل يجب أن تكون عناصر واجهة المستخدم شفافة ، بدون المنطقة البيضاء أعلاه؟ تحتاج إلى تعيين إطار UIVIEW في UIVIEWCONTROLLER بشكل مناسب وأعتقد أنه قد تضطر إلى ضبط لون الخلفية شفافًا:
self.view.backgroundColor = [UIColor clearColor];
لست متأكدًا ، نظرًا لأنني لا أستخدم IB أبدًا ، ولكن قد يكون من الممكن ضبط قيمة ألفا لون الخلفية للعرض الأساسي إلى 0. ليس ألفا للمنظر نفسه ، ولكن من لون الخلفية.