سؤال

كنت أعمل على تطبيقي مؤخرًا وأردت تغيير سطوع الإضاءة الخلفية. أردت بعد ذلك استعادة مستوى الإضاءة الخلفية إلى إعداده الأصلي عند الخروج من التطبيق. هنا هو الرمز:

#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()

إذا قمت بحل المشكلة ، فيرجى تدوين الكود الصحيح للمطورين الآخرين ، وتضمينني. ؛-)

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