Чи можу я змінити розмір UIActivityIndicator?


93

Який би розмір я не надав йому під час розподілу, він відображає лише фіксований розмір. Чи можна його збільшити?

Код:

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;

Відповіді:


50

Розмір фіксується стилем. Це стандартизований елемент інтерфейсу, тому API не любить із ним возитися.

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

Тільки з точки зору дизайну інтерфейсу, як правило, краще залишити ці загальні стандартизовані елементи в спокої. Користувача вчили, що певні елементи мають певний розмір і що вони означають конкретні речі. Зміна стандартного вигляду змінює граматику інтерфейсу та заплутує користувача.


14
Це чудово в певному контексті. Однак що робити, якщо це на заставному екрані, і все, що ви бачите, це логотип і, можливо, ця маленька маленька блешня посередині екрану, виглядає дещо безглуздо. Я не можу повірити, що Apple вважає, що універсальний варіант - це навіть поняття в елементах інтерфейсу.
Бен Ледж'єро,

6
@BenLeggiero Ви говорите не про UIActivityIndicatorViewStyleWhiteLarge, а про маленький розмір, правда? Тому що я думаю, що ця Largeверсія має гарний розмір навіть на порожньому екрані.
значення-значення

2
.whiteLargeробить це! Дякую! Я також встановив UIActivityIndicatorView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))і activityIndicator.backgroundColor = UIColor(red: 255/255, green: 255/255, blue: 255/255, alpha: 0.38). На екранах 6 + / 7 + за замовчуванням екран є занадто крихітним
rockhammer

1
Це буде виглядати розмито, якщо ви зробите масштабне перетворення, щоб збільшити розмір.
Gandalf458

164

Наступне створить показник активності шириною 15 пікселів:

#import <QuartzCore/QuartzCore.h>

...

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

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


1
а показники активності на iPad занадто малі, оскільки їх є посередині веб-перегляду ...
hokkuk

4
Це, здається, збільшує кількість пікселів, що, на жаль, неприйнятно для великих сум.
prewett

69

Swift 3.0 і Swift 4.0

self.activityIndi.transform = CGAffineTransform(scaleX: 3, y: 3)

3
Саме те, що мені було потрібно. Це має бути головною відповіддю.
nocdib

Мені подобаються однолінійні рішення для простих питань! Зараз єдине питання полягає в тому, як його згладити. У два рази більший виглядає трохи грубо на Apple TV
Michele Dall'Agata

@ MicheleDall'Agata все ще не існує жодного власного рішення для високоякісної графіки прогресу графіки в iOS, якщо ви хочете зробити власний, ніж це добре, але я пропоную використовувати рідний bcoz розміру та продуктивності програми
Harshil Kotecha

@HarshilKotecha Насправді я пізніше з'ясував, що (принаймні для tvOS) в IB існує стиль для активності, який називається "Large White". Цей має вдвічі більшу пропорцію, ніж нормальний, на що я і прагнув. Регулярні занадто малі, добре, можливо, для однієї клітини.
Michele Dall'Agata

45

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

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

Оригінальний розмір - 1,0f. Тепер ви відповідно збільшуєте та зменшуєте розмір.


3
let transform = CGAffineTransformMakeScale(1.5, 1.5) activityIndicator.transform = transform
Rohit Funde

11

Стрімкий3

 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

Ось розширення, яке працюватиме з 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)


1

Найкраще, що ви можете зробити, - це використовувати whiteLargeстиль. let i = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.whiteLarge).

Збільшення розміру UIActivityIndicatorViewне змінює розмір власного індикатора, як ви можете бачити на цих знімках.малий показник "великий" показник


-1

activityIndicator.transform = CGAffineTransform (масштабX: 1,75, y: 1,75);

Це мене спрацювало для перетворення розміру показника.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.