سؤال

لدي جدول طاولات مع مخصص الميزات التي بها Uilabels و uilabels عليها. عندما يتم تسجيل أحد الأزرار، أريد إظهار "تلميح الأدوات" وصف نص الزر.

يعمل معظم كل شيء إلا عندما أحاول تحويل إحداثيات المركز لأوزيبتون إلى إحداثيات الجذر وهو Uiview.

هنا هو الرمز:

- (void) fancyLabelButtonPressed: (UIButton *) button {
  CGPoint btnPoint = button.center;   // x=200.5 y=27.5
  CGPoint rootViewPoint = [button convertPoint:btnPoint toView:rootView];
  // rootViewPoint -> x=390.5 y=197.5
  CGPoint pointToUse = CGPointMake(btnPoint.x +20, rootViewPoint.y - 23); // Hack to get it close
}

كيف يمكن rootViewPoint.x=390.5 عندما أكون في عرض صورة؟ !!؟ باستخدام X من الزر و Y من JootViewPoint، أقترب من ما يجب أن يكون عليه، إنه مجرد اختراق.

هل يرى أي شخص ما أفعله خطأ؟ او هل هناك طريقه افضل؟

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

المحلول

هذا لأنك تقوم بتحويل النقطة من الرأي الخطأ. ال center خاصية هي في الواقع في نظام الإحداثيات من SuperView للزر، كل ما هو، لذلك عند تحويله إلى الجذر الخاص بك، يجب عليك تحويله من هناك. وبالتالي:

rootViewPoint = [[button superview] convertPoint:btnPoint toView:rootView];

يجب أن تعطيك ما تبحث عنه.

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