1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
/*
* utils.mm, part of VCMI engine
*
* Authors: listed in file AUTHORS in main folder
*
* License: GNU General Public License v2.0 or later
* Full text of license available in license.txt file, in main folder
*
*/
#include "StdInc.h"
#include "utils.h"
#import <UIKit/UIKit.h>
namespace
{
UIActivityIndicatorView *indicator;
}
namespace iOS_utils
{
double screenScale()
{
return UIScreen.mainScreen.nativeScale;
}
void showLoadingIndicator()
{
NSCAssert(!indicator, @"activity indicator must be hidden before attempting to show it again");
indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
[indicator startAnimating];
auto mainView = UIApplication.sharedApplication.keyWindow.rootViewController.view;
mainView.userInteractionEnabled = NO;
[mainView addSubview:indicator];
indicator.center = {CGRectGetMidX(mainView.bounds), CGRectGetMidY(mainView.bounds)};
}
void hideLoadingIndicator()
{
indicator.superview.userInteractionEnabled = YES;
[indicator stopAnimating];
[indicator removeFromSuperview];
indicator = nil;
}
void hapticFeedback()
{
auto hapticGen = [[UIImpactFeedbackGenerator alloc] initWithStyle:UIImpactFeedbackStyleLight];
[hapticGen impactOccurred];
}
}
|