В принципе, яркость можно изменять с помощью метода ШИМ (широтно-импульсная модуляция): например, для 50% яркости включите светодиод на некоторое время, затем выключите его на тот же период времени и так далее.
При быстром выполнении мерцание не будет видно, а яркость будет равна 50%.
К сожалению, я пока не нашел способа переключать светодиод iPhone на достаточно высокой частоте. Переключение AVCaptureTorchModeOn
/ AVCaptureTorchModeOff
не кажется достаточно быстрым - или, возможно, основной поток (на котором я пробовал) просто имеет слишком низкий приоритет в iOS.
Редактировать: теперь есть API для установки уровня фонарика в iOS 6.