كيف أقوم بإعادة ضبط (أي الامم المتحدة والتكبير) على UIScrollView؟

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

سؤال

ولدي UIScrollView أن يحتوي على صورة والتحكم مجزأة التي تسمح للمستخدم لتبديل صورة داخل ScrollView. إذا أنا فقط مبادلة صورة من داخل UIImageView، فإنه سيتم عرض صورة جديدة في ولاية أسرع في. كيف يمكنني إعادة UIScrollView العودة إلى حالته؟-التكبير في الامم المتحدة

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

المحلول

ولدي مناقشة مفصلة كيف يعمل (ولماذا) UIScrollView التكبير في github.com/andreyvit/ScrollingMadness / .

(وصلة يتضمن أيضا وصفا لكيفية تكبير UIScrollView برمجيا، وكيفية محاكاة صور على غرار مكتبة الترحيل + التكبير + التمرير، وهو مشروع سبيل المثال والطبقة ZoomScrollView التي بتغليف بعض من سحر التكبير).

اقتباس:

وUIScrollView لم يكن لديك فكرة وجود "مستوى التكبير الحالي"، لأن كل subview أنه يحتوي قد يكون بها مستوى التكبير الحالي. لاحظ أنه ليس هناك مجال في UIScrollView للحفاظ على مستوى التكبير الحالي. ومع ذلك نحن نعرف أن شخصا ما يخزن هذا المستوى التكبير، لأنه إذا كنت قرصة التكبير وsubview، ثم إعادة تعيين في تحويل لCGAffineTransformIdentity، ثم قرصة مرة أخرى، ستلاحظ أن تمت استعادة مستوى التكبير السابق للsubview.

في الواقع، إذا نظرتم الى التفكيك، بل هو UIView الذي يخزن مستوى التكبير الخاص به (وأشار داخل الكائن UIGestureInfo من قبل الحقل _gestureInfo). كما أن لديها مجموعة من الأساليب غير الموثقة لطيفة مثل zoomScale وsetZoomScale:animated:. (العقل لكم، كما أن لديها مجموعة من الأساليب المتعلقة التناوب، وربما نحن نحصل على دوران فتة دعم في يوم من الأيام في وقت قريب.)

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

نصائح أخرى

إذا كنت لا إعادة رسم وجهة نظرك على الانتهاء من قرصة التكبير الحدث، ثم يتم تعيين عامل التكبير من تحويل الملكية من العرض الذي العودة من viewForZoomingInScrollView: طريقة مندوب. لإعادة هذا التكبير، وتعيين قيمة عرض لتحويل الملكية إلى CGAffineTransformIdentity.

وحذار، على الرغم من أن سوف يبدء عملية التكبير قرصة المقبلة حيث غادر السابق قرصة التكبير قبالة (أي، سيتم تجاهل الجدول الجديد الخاص بك). كمحاولة للتغلب على هذه، قد تحتاج إلى تنفيذ بعض ما وصف <لأ href = "https://stackoverflow.com/questions/448285/how-do-i-reset-after-a-uiscrollview-zoom/451629# 451629 "> هنا .

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