استعادة الإضاءة الخلفية إلى المستوى السابق ، iPhone
-
21-09-2019 - |
سؤال
كنت أعمل على تطبيقي مؤخرًا وأردت تغيير سطوع الإضاءة الخلفية. أردت بعد ذلك استعادة مستوى الإضاءة الخلفية إلى إعداده الأصلي عند الخروج من التطبيق. هنا هو الرمز:
#include "GraphicsServices.h"
- (void) viewWillAppear:(BOOL)animated
{
NSNumber* bl = (NSNumber*) CFPreferencesCopyAppValue(CFSTR("SBBacklightLevel"), CFSTR("com.apple.springboard")); // To retrieve backlight settings
prevBacklightLevel = [bl floatValue];
GSEventSetBacklightLevel(0.5f);
}
// Other code here...
- (void)applicationWillTerminate
{
GSEventSetBacklightLevel(prevBacklightLevel); // To restore to original level
}
يتغير الإضاءة الخلفية بشكل صحيح عند تحميل التطبيق ، ومع ذلك عندما يخرج المستخدم ، يظل الإضاءة الخلفية على المستوى الذي حدده التطبيق ... كيف غير مريح!
هل يمكن أن يساعدني أي شيء لسبب عدم عمل هذا كما هو متوقع ، هل أفعل أي شيء خاطئ بشكل واضح؟
لم أتمكن من العثور على الكثير من المعلومات على الويب فيما يتعلق بهذه المشكلة.
ViewController.h يتطلب
#import "GraphicsServices.h"
ايضا.
تحرير // هل يمكن لأي شخص المساعدة في هذه المشكلة:
عند مغلق التطبيق ، يتغير مستوى الإضاءة الخلفية ، ولكن دائمًا إلى 0 ، بغض النظر عن ما كان عليه قبل تشغيل التطبيق. ربما يكون BL دائمًا 0 لسبب ما؟
شكرا جزيلا،
ستو
المحلول
اكتشف الجواب. لقد كان خطأ أساسي حقًا ... خطأ سخيف. كان لدي:
- (void)applicationWillTerminate
في ViewController.m بدلاً من appdelegate.m
إنه يعمل الآن بشكل مثالي.
آمل أن يساعد هذا أي شخص هناك مع مشكلة مماثلة ،
ستو
نصائح أخرى
للسيطرة على السطوع داخل التطبيق فكرة مثيرة للاهتمام. ومع ذلك ، فإن استخدام هذه السلسلة سيكون سبب الرفض. (انظر حلقة الوصل.)
حسنًا ، ... لا أعرف كيفية استعادة المستوى بعد خروج المستخدم. لذلك ، اسمحوا لي أن أقدم لك اثنين من واجهات برمجة التطبيقات. هم الطريق على Mac OS X.
CFPreferencesSetAppValue()
و CFPreferencesAppSynchronize()
إذا قمت بحل المشكلة ، فيرجى تدوين الكود الصحيح للمطورين الآخرين ، وتضمينني. ؛-)