سؤال

عند رسم السلاسل باستخدام drawAtPoint :، drawInRect: وحتى إعداد الخاصية نص UILabels - النص يمكن أن تظهر أحيانا ضبابية قليلا

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

وعلى سبيل المثال:

UIFont *labelFont = [UIFont fontWithName:@"Helvetica-Bold" size:12];

هل يسبب التسمية مما أدى إلى أن يكون النص غير واضح قليلا.

UIFont *labelFont = [UIFont fontWithName:@"Helvetica-Bold" size:13];

والنتائج في نصوص واضحة.

وسؤالي هو: لماذا يحدث هذا؟ وهل هو مجرد مسألة اختيار حجم الخط الأمثل للمحرف؟ إذا كان الأمر كذلك، ما هي أحجام الخط الأمثل؟

وUPDATE: يبدو أنه ربما أنها ليست حجم الخط الذي يسبب التشويش. ومن المحتمل أن يكون وسط المستطيل هو نقطة كسور. هنا هو التعليق وجدت في المحافل ديف أبل:

<اقتباس فقرة>   

وتحقق هذا المنصب. فمن المحتمل على   بكسل كسور. تغيير مركز أن يكون   قيمة صحيحة.

وأنا تقريب قيم كل ما عندي من النقاط، ولكن لا تزال هناك أماكن حيث لا يزال النص غير واضح. وقد أي شخص يأتي عبر هذه المسألة قبل؟

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

المحلول

ولقد حل هذه المشكلة.

وفقط للتأكد من أن نقطة أو المستطيل الذي يتم رسم لا يحدث على بكسل كسور.

وأي بمعنى. NSLog(@"%@", NSStringFromCGRect(theRect)) لتحديد أي نقطة يتم رسمها على بكسل كسور. ثم استدعاء round() حول هذه النقطة.

نصائح أخرى

وأنت قد ترغب في النظر في NSIntegralRect ()، فإنه ما تريد.

والعفو جهلي إذا كان هذا غير صحيح، وأنا أعلم شيئا عن اي فون أو الكاكاو.

إذا كنت طالبا للنص أن تركز في المستطيل، قد تحتاج أيضا للتأكد من عرض و / أو ارتفاع المستطيل هو عدد زوجي.

ولقد كان لي هذه المشكلة أيضا، ولكن بلدي الحل هو مختلف ويمكن أن يساعد شخص ما. كانت مشكلتي طمس النص بعد تغيير حجم كائن UIView من خلال TouchesBegan وCGAffineTransformMakeScale ومن ثم إلى CGAffineTransformIdentity في TouchesEnded.

وحاولت كل من تفاوت حجم النص والتقريب من النقاط x و مركز ذ لكن لا يعمل. وكان الحل لمشكلتي الاستخدام حتى أحجام العرض والارتفاع من بلدي UIView !!

ويساعد هذا الأمل ....

من تجاربي، بعض الخطوط لا تجعل بوضوح في أحجام معينة. مثلا هلفتيكا-جريئة لا يجعل "." جيدا في 16.0f، ولكنها واضحة في 18.0f. (إذا كنت تبحث عن كثب، بكسل العلوي من "." هو ضبابية.)

وبعد أن لاحظت ذلك، لقد شعرت بالقلق في كل مرة أرى أن UIView، نظرا لأنه صدر بشكل حيوي.

في حالتي، وجهت النص على CALayer العرف وتبين أن ضبابية جدا. I حلها عن طريق وضع contentScale مع قيمة المناسبة:

الهدف-C:

layer.contentsScale = [UIScreen mainScreen].scale;

وسويفت:

layer.contentsScale = UIScreen.main.scale
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top