Вы можете сделать это, (конечно, используя частные API):
на iOS5:
#include <stdio.h>
#include <dlfcn.h>
int (*SBSSpringBoardServerPort)() = (int (*)())dlsym(RTLD_DEFAULT, "SBSSpringBoardServerPort");
int port = SBSSpringBoardServerPort();
void (*SBDimScreen)(int _port,BOOL shouldDim) = (void (*)(int _port,BOOL shouldDim))dlsym(RTLD_DEFAULT, "SBDimScreen");
и затем используйте
SBDimScreen(port,YES);
всякий раз, когда вы хотите затемнить, и
SBDimScreen(port,NO);
всякий раз, когда вы хотите, чтобы отменить.
В iOS6:
void (*BKSDisplayServicesSetScreenBlanked)(BOOL blanked) = (void (*)(BOOL blanked))dlsym(RTLD_DEFAULT, "BKSDisplayServicesSetScreenBlanked");
и затем используйте:
BKSDisplayServicesSetScreenBlanked(1); // 1 to dim, 0 to undim
«Тусклое» здесь означает полное выключение экрана. Это то, что система использует, например, когда событие близости происходит во время разговора.