Как установить серый цвет фона для UIActivityIndicator при загрузке UIView в iOS
В настоящее время у меня есть UIActivityIndicator
, появляющийся на экране второй или второй. Я хотел бы установить серый фон, поскольку это появляется на экране, но я не уверен, как это сделать...
Вот как я инициализировал индикатор до сих пор.
- (void)viewDidLoad
{
//...
activity = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 32.0f, 32.0f)];
[activity setCenter:CGPointMake(160.0f, 208.0f)];
[activity setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleGray];
[self.tableView addSubview:activity];
[activity startAnimating];
[activity performSelector:@selector(stopAnimating) withObject:nil afterDelay:1.0];
}
Любая помощь будет принята с благодарностью.
Ответы
Ответ 1
Вы должны проверить SVProgressHUD
У него есть опции для маскировки фона и без труда работать с.
У SVProgressHUDMaskType есть опции для
enum {
SVProgressHUDMaskTypeNone = 1, // allow user interactions, don't dim background UI (default)
SVProgressHUDMaskTypeClear, // disable user interactions, don't dim background UI
SVProgressHUDMaskTypeBlack, // disable user interactions, dim background UI with 50% translucent black
SVProgressHUDMaskTypeGradient // disable user interactions, dim background UI with translucent radial gradient (a-la-alertView)
};`
Ответ 2
Нет необходимости в отдельном представлении. Вот простой механизм:
UIActivityIndicatorView *activity = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
self.activityIndicatorView = activity;
// make the area larger
[activity setFrame:self.view.frame;
// set a background color
[activity.layer setBackgroundColor:[[UIColor colorWithWhite: 0.0 alpha:0.30] CGColor]];
CGPoint center = self.view.center;
activity.center = center;
[activity release];
Ответ 3
Попробуйте этот простой метод
Это хорошо работает для меня....
- (void)viewDidLoad
{
UIActivityIndicatorView *activityIndicator= [[UIActivityIndicatorView alloc]initWithFrame:CGRectMake(0, 0, 50, 50)];
activityIndicator.layer.cornerRadius = 05;
activityIndicator.opaque = NO;
activityIndicator.backgroundColor = [UIColor colorWithWhite:0.0f alpha:0.6f];
activityIndicator.center = self.view.center;
activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray;
[activityIndicator setColor:[UIColor colorWithRed:0.6 green:0.8 blue:1.0 alpha:1.0]];
[self.view addSubview: activityIndicator];
}
Ответ 4
На самом деле, я думаю, вы можете сделать это проще:)
[_activityIndicator setBounds:self.view.frame];
[_activityIndicator setCenter:self.view.center];
[_activityIndicator setAlpha:0.5f];
[_activityIndicator startAnimating];
Вы можете установить цвет фона в раскадровке или сделать это программно, используя
UIColor *activityBackgroundColor = [UIColor colorWithRed:0.6 green:0.8 blue:1.0 alpha:1.0];
[_activityIndicator setColor:activityBackgroundColor];
Обязательно проверьте "Hides When Stopped" в инспекторе атрибутов в Xcode с выбранным индикатором активности.
Ответ 5
Вы можете поместить представление в окно, имеющее цвет фона черного цвета с непрозрачностью 0,5. Ввод его в окно также заблокирует контроллеры навигации и контроллеры панели вкладок.
Ответ 6
Еще проще, вы можете установить цвет фона слоя на полупрозрачный черный (или любой другой цвет):
self.activityIndicatorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
self.activityIndicatorView.layer.backgroundColor = [[UIColor colorWithWhite:0.0f alpha:0.5f] CGColor];
self.activityIndicatorView.hidesWhenStopped = YES;
self.activityIndicatorView.frame = self.view.bounds;
[self.view addSubview:self.activityIndicatorView];
Конечно, не забывайте:
#import <QuartzCore/QuartzCore.h>
Таким образом, прядильщик останется непрозрачным.
Ответ 7
@SVMRAJESH Ответ в Swift 2.0
let loadingIndicator = UIActivityIndicatorView(frame: CGRectMake(0, 0, 50, 50))
loadingIndicator.layer.cornerRadius = 05
loadingIndicator.opaque = false
loadingIndicator.backgroundColor = UIColor(white: 0.0, alpha: 0.6)
loadingIndicator.center = self.view.center;
loadingIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.Gray
loadingIndicator.color = UIColor(red:0.6,green:0.8,blue:1.0,alpha:1.0)
loadingIndicator.startAnimating()
self.view.addSubview(loadingIndicator)
Ответ 8
Как и в Xcode 8.3, есть способ сделать это в раскадровке:
- Добавьте представление активности в свою сцену, предпочтительно в нижнюю часть списка объектов в вашем представлении, чтобы она отображалась "сверху" всего.
- Заставьте его охватить весь вид, добавив ограничения
- Нажмите "Инспектор атрибутов"
- Включить "Hides When Stopped"
- Установите "Альфа" > 0 (0,3 хорошо)
- Установите "Фон" на темный цвет (черные хорошо работают)
Здесь снимок экрана.
Ответ 9
Swift 3
Чтобы установить backgroundColor
activityIndicatorView.backgroundColor = UIColor.gray // Set Activity indicator backgroundColor
Чтобы создать и настроить индикатор активности
var activityIndicatorView : UIActivityIndicatorView! // Declare variable to hold activity indicator
В viewDidLoad вызовите метод ниже, чтобы создать и настроить индикатор активности, также не забудьте добавить в представление (где вы хотите показать индикатор активности), вызвав view.addSubview(activityIndicatorView)
в viewDidLoad. Также установите для него ограничения.
func createAndconfigureActivityIndicatorView() {
activityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: .white)
activityIndicatorView.backgroundColor = UIColor.gray // Set Activity indicator backgroundColor
activityIndicatorView.startAnimating() // To start animation
activityIndicatorView.hidesWhenStopped = true // Setting this true means, when you stop the activity indicator, its automatically hidden (see below)
}
// Stops and Hides Activity Indicator
activityIndicatorView.stopAnimating()