كيف تحدد إحداثيات الصورة لصورة كبيرة محصورة داخل واجهة UIImageView؟

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

سؤال

فيما يتعلق بـ iPhone SDK:

لدي صورة 512 × 512 بكسل .PNG ، وأريد أن أعرضها ضمن 200 × 200 بكسل UiimageView مع المحاصيل (بدقة أصلية ، دون التكبير أو التركيب أو الدوران). هل هناك طريقة لتحديد إحداثيات الصورة المرئية داخل UiimageView؟

على سبيل المثال ، إذا كانت الصورة الموجودة في المركز الدقيق لـ UiimageView ، فأريد أن أعرف ما هي إحداثيات الصورة في UiimageView (0،0) و (200،200) ، والتي ستكون (156،156) و (356،356) ، و ( على التوالي للصورة التي يتم عرضها.

أخطط لتنفيذ وظائف "Pan" و "Zoom" في مرحلة ما ، لكنني أريد أن أعرف كيفية معالجة هذه المشكلة أولاً. لم يكن مرجع فئة UiimageView مفيدًا ... كنت آمل أن أتجنب استخدام Uiview ، ولكن إذا كان ذلك ضروريًا ، فسأذهب إلى هذا الطريق.

شكرًا!

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

المحلول 2

شكرا لمساعدتك. أصبح من ميزات PAN/Zoom تافهة بعد تنفيذ UIScrollView. تنفيذ UisCrollView اسمحوا لي أن أحدد الإحداثيات التي احتاجها مع myScrollView.bounds.origin.x و myScrollView.bounds.origin.y القيم ... التكبير لا يزال يتطلب الحساب - كما ذكرت أعلاه ، لكنني على المسار الصحيح الآن.

فيما يلي الرمز الذي استخدمته لجعل UisCrollView (استنادًا إلى مصادر متعددة متوفرة على الشبكة وهذا الموقع - Apple's ScrollViewsuite كان مفيدًا بشكل خاص. هنا هو الرمز الذي استخدمته في (void)viewDidLoad قسم من برنامجي ، نأمل أن يجده الآخرون مفيدًا:

UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[imageArray objectAtIndex:0]]; //imageArray is an array/stack of images...
[self setMyImage:tempImageView]; //myImage is of type UIImageView
[myImage setTag:100]; //set this to an 'arbitrary' value so that when I update the scrollview I can remove the current image...
[tempImageView release];

myScrollView.contentSize = CGSizeMake(myImage.frame.size.width, myImage.frame.size.height);
myScrollView.maximumZoomScale = 10.0;
myScrollView.minimumZoomScale = 0.15;
myScrollView.clipsToBounds = YES;
myScrollView.delegate = self;

[myScrollView addSubview:myImage];

نصائح أخرى

أنت محق في ما رأيته من مرجع UiimageView - لا توجد طريقة سهلة للقيام بذلك باستخدام UiimageView وحده. ستحتاج إلى مراعاة أشياء مثل ContentMode الخاصة بـ UiimageView أو تقييد نفسك فقط على حساب الموضع فقط لـ UiviewContentMode.

ومع ذلك ، عندما تصل في النهاية إلى تنفيذ Pan and Zoom ، ستستخدم UisCrollView مع uiimageview باعتبارها نظرة فرعية على هذا UisCrollView. في هذه المرحلة ، سيكون من العقلاء أن حجم UiimageView الخاص بك في البداية إلى حجم أي صورة تعرضها (يمكن أن تكون ديناميكية). يمكنك بعد ذلك تحديد مكان الصورة عن طريق تحديد مكان الصورة رأي هو ، وهو شيء يمكنك إنجازه بكل بساطة ومع القليل من الرياضيات.

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