Как прошить экран программно? - PullRequest
4 голосов
/ 10 марта 2011

После долгого поиска я должен сдаться и спросить.

Возможно ли мигать экран (так же, как при съемке скриншота с помощью кнопки домой + кнопка питания)?

Если да, то как?

Заранее спасибо за ответы.

Ответы [ 2 ]

6 голосов
/ 10 марта 2011

Добавьте белый полноэкранный UIView в окно и анимируйте его альфа (играйте с продолжительностью и кривой анимации, чтобы получить желаемый результат):

 -(void) flashScreen {
    UIWindow* wnd = [UIApplication sharedApplication].keyWindow;
    UIView* v = [[[UIView alloc] initWithFrame: CGRectMake(0, 0, wnd.frame.size.width, wnd.frame.size.height)] autorelease];
    [wnd addSubview: v];
    v.backgroundColor = [UIColor whiteColor];
    [UIView beginAnimations: nil context: nil];
    [UIView setAnimationDuration: 1.0];
    v.alpha = 0.0f;
    [UIView commitAnimations];
}

Редактировать: не забудьте удалить этопросмотр после окончания анимации

0 голосов
/ 25 июня 2017

Аналогично ответу от Макса, но вместо него используется UIView animateWithDuration

- (void)flashScreen {
// Make a white view for the flash
UIView *whiteView = [[UIView alloc] initWithFrame:self.view.frame];
whiteView.backgroundColor = [UIColor whiteColor];
whiteView.alpha = 1.0; // Optional, default is 1.0

// Add the view
[self.view addSubview:whiteView];

// Animate the flash
[UIView animateWithDuration:1.0
                      delay:0.0
                    options:UIViewAnimationOptionCurveEaseOut // Seems to give a good effect. Other options exist
                 animations:^{
                     // Animate alpha
                     whiteView.alpha = 0.0;
                 } 
                 completion:^(BOOL finished) {
                     // Remove the view when the animation is done
                     [whiteView removeFromSuperview];
                 }];
}

Существуют разные версии animateWithDuration, например, вы также можете использовать эту более короткую версию, если вам не нужна задержка и вы согласны с параметрами анимации по умолчанию.

[UIView animateWithDuration:1.0
                 animations:^{
                     // Animate alpha
                     whiteView.alpha = 0.0;
                 } 
                 completion:^(BOOL finished) {
                     // Remove the view when the animation is done
                     [whiteView removeFromSuperview];
                 }];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...