Posso modificare le dimensioni di UIActivityIndicator?


93

Qualunque sia la dimensione assegnata durante l'allocazione, mostra solo la dimensione fissa. È possibile aumentarlo?

Codice:

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;

Risposte:


50

La dimensione è fissata dallo stile. È un elemento dell'interfaccia standardizzato, quindi l'API non ama giocherellare con esso.

Tuttavia, probabilmente potresti fare una trasformazione in scala su di esso. Non sono sicuro di come ciò influirebbe visivamente, tuttavia.

Solo dal punto di vista della progettazione dell'interfaccia utente, di solito è meglio lasciare da soli questi elementi standardizzati comuni. Agli utenti è stato insegnato che alcuni elementi appaiono in una certa dimensione e che significano cose specifiche. La modifica dell'aspetto standard altera la grammatica dell'interfaccia e confonde l'utente.


14
È fantastico in certi contesti. Tuttavia, cosa succede se questo è in una schermata iniziale e tutto ciò che vedi è il logo e forse questo piccolo spinner al centro dello schermo, sembra un po 'sciocco. Non riesco a credere che Apple pensi che una taglia unica sia anche un concetto negli elementi dell'interfaccia utente.
Ben Leggiero

6
@BenLeggiero Non stai parlando UIActivityIndicatorViewStyleWhiteLarge, ma delle dimensioni ridotte invece, vero? Perché penso che questa Largeversione abbia una bella dimensione anche su uno schermo vuoto.
significato conta il

2
.whiteLargelo fa! grazie! Ho anche impostato UIActivityIndicatorView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))e activityIndicator.backgroundColor = UIColor(red: 255/255, green: 255/255, blue: 255/255, alpha: 0.38). Sugli schermi 6 + / 7 + quello predefinito è troppo piccolo
rockhammer

1
Apparirà sfocato se esegui una trasformazione di ridimensionamento per aumentare le dimensioni.
Gandalf458

164

Quanto segue creerà un indicatore di attività largo 15 px:

#import <QuartzCore/QuartzCore.h>

...

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

Sebbene comprenda il sentimento della risposta di TechZen, non credo che la regolazione delle dimensioni di un UIActivityIndicator di una quantità relativamente piccola sia davvero una violazione degli idiomi dell'interfaccia standardizzati di Apple: se un indicatore di attività è 20px o 15px non cambierà l'interpretazione di un utente di quello che sta succedendo.


1
e gli indicatori di attività sono troppo piccoli sull'iPad con uno nel mezzo di una visualizzazione web ...
hokkuk

4
Questo sembra aumentare i pixel, quindi non è accettabile per grandi quantità, sfortunatamente.
prewett

68

Swift 3.0 e Swift 4.0

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

3
Esattamente quello di cui avevo bisogno. Questa dovrebbe essere la risposta migliore.
nocdib

Adoro le soluzioni di una riga per questioni semplici! Ora l'unico problema è come anti alias. Al doppio delle dimensioni sembra un po 'ruvido su Apple TV
Michele Dall'Agata

@ MicheleDall'Agata ancora non esiste alcuna soluzione nativa per la barra di avanzamento della grafica di buona qualità in iOS se vuoi personalizzare di quanto non sia buono, ma suggerisco di usare bcoz nativo delle dimensioni dell'app e delle prestazioni dell'app
Harshil Kotecha

@HarshilKotecha In realtà ho scoperto più tardi che (almeno per tvOS) nell'IB c'è uno stile per l'attrezzatura di attività che si chiama "Large White". Quello ha il doppio delle proporzioni di quello normale, che è quello a cui miravo. I clienti abituali sono troppo piccoli, buoni forse per una singola cella.
Michele Dall'Agata

45

È possibile ridimensionare UIActivityIndicator.

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

La dimensione originale è 1.0f. Ora aumenti e riduci le dimensioni di conseguenza.


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

11

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

Ecco un'estensione che funzionerebbe con Swift 3.0 e controlli per impedire il ridimensionamento 0 (o qualsiasi valore tu voglia proibire):

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

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

Chiamalo così per scalare a 40 punti (2x):

activityIndicatorView.scale(factor: 2.0)


1

Il meglio che puoi fare è usare lo whiteLargestile. let i = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.whiteLarge).

L'aumento della dimensione di UIActivityIndicatorViewnon cambia la dimensione dell'indicatore vero e proprio, come puoi vedere in queste immagini.piccolo indicatore indicatore "grande"


-1

activityIndicator.transform = CGAffineTransform (scaleX: 1.75, y: 1.75);

Questo mi ha aiutato a trasformare la dimensione dell'indicatore.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.