Большой индикатор активности на iPhone - PullRequest
11 голосов
/ 16 августа 2010

Кто-нибудь знает, как показать закругленный квадрат с индикатором активности вращения?Он используется во многих приложениях.Если вы не знаете, о чем я говорю, это похоже на индикатор при изменении громкости на вашем Mac, но с более темным фоном.Я не уверен, встроен ли он в iOS или кто-то другой.

Как и в этом посте, но не в полноэкранном режиме, просто индикатор активности Как создать полноэкранный режим отображения статуса наiPhone?

Ответы [ 6 ]

19 голосов
/ 17 октября 2011

Вот что я использую, когда хочу показать такие индикаторы.

UIView *loading = [[UIView alloc] initWithFrame:CGRectMake(100, 200, 120, 120)]; 

loading.layer.cornerRadius = 15;
loading.opaque = NO;
loading.backgroundColor = [UIColor colorWithWhite:0.0f alpha:0.6f];

UILabel *loadLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 25, 81, 22)];

loadLabel.text = @"Loading";
loadLabel.font = [UIFont boldSystemFontOfSize:18.0f];
loadLabel.textAlignment = UITextAlignmentCenter;
loadLabel.textColor = [UIColor colorWithWhite:1.0f alpha:1.0f];
loadLabel.backgroundColor = [UIColor clearColor];

[loading addSubview:loadLabel];
[loadLabel release];

UIActivityIndicatorView *spinning = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
spinning.frame = CGRectMake(42, 54, 37, 37);
[spinning startAnimating];

[loading addSubview:spinning];
[spinning release];

loading.frame = CGRectMake(100, 200, 120, 120);

Затем вы просто добавляете представление «loading» к представлению по вашему выбору, и вы его получаете.

Надеюсь, это то, что вам нужно.

14 голосов
/ 16 августа 2010

Ваш скриншот, вероятно, использует модуль DSActivityView Дэвида Синклера.В частности, его компонент DSBezelActivityView.Или, если нет, это закрытая копия.

http://www.dejal.com/developer/dsactivityview

Я все время использую DSActivityView.Отличная библиотека.Подбросьте эту штуку при сборе данных, чтобы пользователи и клиенты были довольны.

11 голосов
/ 16 августа 2010

Один вариант: MBProgressHUD .

5 голосов
/ 26 августа 2011

Не думаю, что этот скриншот - мой DSBezelActivityView ; метрики выглядят немного иначе. Но это очень похоже.

Обратите внимание, что DSActivityView и его подклассы не используют никаких изображений или перьев; это чистый код.

Чтобы ответить на исходный вопрос, было бы легко изменить DSBezelActivityView, чтобы исключить полноэкранный серый фон. Вы можете сделать это, создав подкласс и переопределив метод -setupBackground следующим образом:

- (void)setupBackground;
{
    [super setupBackground];

    self.backgroundColor = [UIColor clearColor];
}

Надеюсь, это поможет!

2 голосов
/ 08 января 2014

Попробуйте этот простой метод, он хорошо работает для меня ....

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];
0 голосов
/ 16 августа 2010

Вы фактически используете два подкласса UIView и пользовательское изображение .png, чтобы получить желаемый вид. Серый полупрозрачный прямоугольник будет объектом UIImageView, для получения нужного эффекта вам необходим файл .png серого квадрата с закругленными углами, он не должен быть окончательным размером, если есть хотя бы один пиксель прямого края между углами будет работать нормально. Затем вы загрузите его как UIImage с UIImage stretchableImageWithLeftCapWidth: topCapHeight: метод, он позволяет указать верхнюю и левую части изображения, которые должны оставаться неизменными, и срез по 1 пикселю в каждом направлении будет растянут, чтобы заполнить представление UIImage, в котором используется изображение. http://www.bit -101.com / blog /? P = 2275 имеет отличный пример того, как это работает. Поэтому создайте UIImage, затем создайте UIImageView, используя это изображение, установите для его непрозрачного свойства значение NO, а для свойства alpha - то, что вам подходит. Добавьте это подпредставление вашего текущего представления. Теперь вам просто нужно добавить индикатор хода вращения, это еще проще, просто создайте новый UIActivityIndicatorView и добавьте его в качестве подпредставления UIImageView, который вы уже создали. Тот же базовый метод используется для создания практически любого изменяемого размера элемента в приложении iOS. В коде примера Apple UICatalog есть несколько примеров их использования для кнопок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...