Uiview الموارد التلقائية
-
22-09-2019 - |
سؤال
لقد كنت أعمل على توحيد UIVIEW المخصص ولديه القليل جدًا لتقوله في هذا الأمر. ما هو أكثر من ذلك ، بناءً على ردود الفعل ، فإن وثائق Apple خاطئة في بعض المناطق. أخيرًا ، على الرغم من وجود ستة مكونات تغيير حجمها في منشئ الواجهة وستة setAutoresizingMask:
لا يبدو أنهم يرتبطون على الإطلاق. على سبيل المثال ، فإن ضبط نابض العرض في IB له تأثير مختلف عن تحديد autoresizingMask
ل UIViewAutoresizingFlexibleWidth
عند تدوير الجهاز.
هل هناك أي موارد جيدة للتعرف على كيفية تغيير حجم العمل على iPhone؟
تعديل:
أفهم المفاهيم الأساسية التي تستخدمها Apple مثل ContentMode ، وقد قرأت من خلال وثائق UIVIEW. أنا أبحث عن شيء يفسر بعمق أكثر قليلاً ما تفعله إعدادات IB من حيث ما هو متاح في SDK برمجيًا.
المحلول
وضع autoresizingMask
ل UIViewAutoresizingFlexibleWidth
, ، أي ما يعادل ضبط ربيع العرض ، بالإضافة إلى كل من الدعامات اليسرى واليسرى في باني الواجهة (تعني الدعامات أن الحافة هي ليس مرن). إذا كنت ترغب في تكرار سلوك تعيين ربيع العرض فقط ، ولكن ليس الدعامات اليمنى واليسرى ، فسيتعين عليك تعيين autoresizingMask
ل UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin
نصائح أخرى
لقد وجدت هذا المنشور مفيدًا في فهم iOS التلقائي.
http://www.techotopia.com/index.php/ios_4_iphone_rotation،_view_resizing_and_layout_handling
من Apple:
... حدد قيمة هذا القناع من خلال الجمع بين الثوابت الموصوفة في UivieWautoresizing باستخدام C bitwise أو المشغل. يتيح لك الجمع بين هذه الثوابت تحديد أبعاد العرض التي يجب أن تنمو أو تتقلص بالنسبة للنشر. القيمة الافتراضية لهذه الخاصية هي uiviewautoresizingnone ، مما يشير إلى أنه لا ينبغي تغيير حجم العرض على الإطلاق.
... على سبيل المثال ، لنفترض أن هذه الخاصية تتضمن uiviewautoresizationflexiblewidth و uiviewautoresizingflexiblerightmrin لا يشمل ثابت UivieWautoresizingFlexIbleleftMargin مما يشير إلى أن ال تم إصلاح عرض الهامش الأيسر للعرض لكن عرض العرض والهامش الصحيح قد يتغير. وهكذا ، يبدو أن العرض مرسومًا على الجانب الأيسر من نظرته في حين زيادة عرض العرض والفجوة على يمين العرض.
إذا لم تقدم السلوكيات التلقائية التخطيط الدقيق الذي تحتاجه لآرائك ، فيمكنك استخدام طريقة عرض حاوية مخصصة وتجاوز طريقة LayoutSubviews لوضع آراءك الفرعية بشكل أكثر دقة.
لذا ، إذا كنت ترغب في وضع عرض مرسوم على الجانب العلوي والأيمن من نظرته ، فيمكنك تطبيق قناع مثل:
[myView setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleBottomMargin];
الرؤية الإشرافية لديها مثل هذه المعلمات ContentMode و Autoresizessubviews, ، كل شيء مع التلقائي من وجهات نظرها الفرعية تجعل السلوك تغيير حجمه
اقرأ باهتمام http://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/uiview/uiview.html
بالنسبة للسجل ، قمت بخدش رأسي لمدة ساعة لأن Uilabel من خط واحد لن يقلل من حجم الخط لتوصيل العرض. وأخيرا ، هذا فعل الحيلة:
label.contentMode = UIViewContentModeScaleAspectFit;
أنا غوغليت ولا يبدو أن أحد يوضح هذه التفاصيل (يخبرك الجميع أن التسمية يجب أن تكون سطرًا واحدًا ، وضبط AdventSfontsizetofitwidth/MinimumFontsize وما إلى ذلك). ربما تغيرت القيمة الافتراضية لهذه الخاصية؟ أنا على iOS 4.3.