Могу ли я изменить размер UIActivityIndicator? - PullRequest
86 голосов
/ 14 апреля 2010

Какой бы размер я ни дал ему при выделении, он показывает только фиксированный размер. Можно ли его увеличить?

Код:

activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:
                     CGRectMake(142.00, 212.00, 80.0, 80.0)];
[[self view] addSubview:activityIndicator];
[activityIndicator sizeToFit];
activityIndicator.autoresizingMask = (UIViewAutoresizingFlexibleLeftMargin |
                                      UIViewAutoresizingFlexibleRightMargin |
                                      UIViewAutoresizingFlexibleTopMargin |
                                      UIViewAutoresizingFlexibleBottomMargin);
activityIndicator.hidesWhenStopped = YES;
activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;

Ответы [ 8 ]

161 голосов
/ 02 марта 2012

Следующее создаст индикатор активности шириной 15px:

#import <QuartzCore/QuartzCore.h>

...

UIActivityIndicatorView *activityIndicator = [[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray] autorelease];
activityIndicator.transform = CGAffineTransformMakeScale(0.75, 0.75);
[self addSubview:activityIndicator];

Хотя я понимаю смысл ответа TechZen, я не думаю, что изменение размера UIActivityIndicator на относительно небольшую величину на самом деле является нарушением стандартизированных идиом интерфейса Apple - независимо от того, будет ли индикатор активности 20px или 15px, не изменится пользовательская интерпретация происходящего.

49 голосов
/ 19 июня 2017

Swift 3.0 и Swift 4.0

self.activityIndi.transform = CGAffineTransform(scaleX: 3, y: 3)
47 голосов
/ 14 апреля 2010

Размер фиксируется стилем.Это стандартизированный элемент интерфейса, поэтому API не любит возиться с ним.

Однако, вы, вероятно, могли бы сделать преобразование масштабирования на нем.Не уверен, как это повлияет на это визуально, однако.

С точки зрения дизайна пользовательского интерфейса обычно лучше оставить эти общие стандартизированные элементы в покое.Пользователю учили, что определенные элементы появляются в определенном размере и что они означают определенные вещи.Изменение стандартного вида изменяет грамматику интерфейса и сбивает с толку пользователя.

42 голосов
/ 27 октября 2015

Можно изменить размер UIActivityIndicator.

CGAffineTransform transform = CGAffineTransformMakeScale(1.5f, 1.5f);
activityIndicator.transform = transform;

Оригинальный размер 1.0f. Теперь вы увеличиваете и уменьшаете размер соответственно.

10 голосов
/ 12 декабря 2016

Swift3

 var activityIndicator = UIActivityIndicatorView()
    activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.gray)
    activityIndicator.frame = CGRect(x: 0, y: 0, width: 50, height: 50)
    let transform: CGAffineTransform = CGAffineTransform(scaleX: 1.5, y: 1.5)
    activityIndicator.transform = transform
    activityIndicator.center = self.view.center
    activityIndicator.startAnimating()
    self.view.addSubview(activityIndicator)
3 голосов
/ 21 марта 2017

Вот расширение, которое будет работать с Swift 3.0 и проверяет, чтобы предотвратить масштабирование 0 (или любое другое значение, которое вы хотите запретить):

extension UIActivityIndicatorView {
    func scale(factor: CGFloat) {
        guard factor > 0.0 else { return }

        transform = CGAffineTransform(scaleX: factor, y: factor)
    }
}

Назовите это так, чтобы масштабировать до 40 пунктов (2x):

activityIndicatorView.scale(factor: 2.0)
2 голосов
/ 22 мая 2013

Есть также много других полезных трюков "CGAffineTransform", с которыми вы можете играть. Для получения более подробной информации см. Справочник Apple Developer Library:

http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Reference/CGAffineTransform/Reference/reference.html

Удачи!

1 голос
/ 02 июня 2018

Лучшее, что вы можете сделать, это использовать стиль whiteLarge. let i = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.whiteLarge).

Увеличение размера UIActivityIndicatorView не меняет размер самого индикатора, как вы можете видеть на этих рисунках. small indicator

...