سؤال

أنا أستخدم الإصدار التجريبي الرابع من Xcode 6.0، وأجد أن الأزرار الموجودة في ملف UICollectionViewCell ليس ردا على الصنبور.

التفاصيل على النحو التالي:

UICollectionViewController

--- UICollectionViewCell

------ UIButton (UIButton لديه اثنين autolayout القيود لوضع UIButton في المركز الرأسي والمركز الأفقي في Cell )

الآن اصنع cell الحجم شيء مثل:(300، 1000)

قم بتشغيل التطبيق في iPhone Simulator أو جهاز يعمل بنظام iOS 7.0 أو 7.1.x، الزر غير قابل للمس، ولكن اختبره في محاكي iOS 8.0 فلا بأس.أيضا إذا قمت بتغيير الخلية size ل (300, 200), ، الزر يعمل.

أعتقد أنه خطأ في الإصدار التجريبي من Xcode، أليس كذلك؟

وأين يمكنني إطلاق الخلل لشركة أبل؟

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

المحلول

لقد نسوا تعيين قناع تغيير الحجم تلقائيًا لعرض المحتوى الخاص بـ UICollectionViewCell

هذا إصلاحه

self.contentView.autoresizingMask = UIViewAutoresizingFlexibleHeight |    UIViewAutoresizingFlexibleWidth;

نصائح أخرى

يبدو أن هذا ليس خطأ في الواقع، ولكنه مشكلة عدم توافق في استهداف أجهزة iOS 7 باستخدام Xcode 6. مشاركة الضريبة البيئية يصف هذا بمزيد من التفصيل، ولكن هنا هو الرد من Apple DTS:

في نظام التشغيل iOS 7، تم ضبط حجم مشاهدات محتوى الخلايا من خلال أقنعة تغيير الحجم التلقائي.في نظام التشغيل iOS 8، تم تغيير هذا، حيث توقفت الخلايا عن استخدام أقنعة تغيير الحجم التلقائي وبدأت في تغيير حجم عرض المحتوى في LayoutSubviews.إذا تم ترميز السن في نظام التشغيل iOS 8 ثم تم فك تشفيره في نظام التشغيل iOS 7، فستحصل على عرض محتوى بدون قناع تغيير الحجم التلقائي ولا توجد وسيلة أخرى يمكن من خلالها تحديد الحجم نفسه.لذا، إذا قمت بتغيير إطار الخلية، فلن يتبعه عرض المحتوى.

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

حل Alexey أعلاه سيفي بالغرض بالرغم من ذلك:

- (void)awakeFromNib
{
   // Fix for iOS 7 devices targeted using Xcode 6.
   self.contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top