UIActivityIndicator'ın boyutunu değiştirebilir miyim?


95

Tahsis sırasında ona hangi ebatta verirsem vereyim, sadece sabit ölçü gösterir. Arttırmak mümkün mü?

Kod:

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;

Yanıtlar:


51

Boyut stile göre sabitlenmiştir. Standartlaştırılmış bir arayüz öğesidir, bu nedenle API onunla uğraşmayı sevmez.

Bununla birlikte, muhtemelen üzerinde bir ölçeklendirme dönüşümü yapabilirsiniz. Bununla birlikte, görsel olarak nasıl etkileyeceğinden emin değilim.

Sadece bir kullanıcı arayüzü tasarım perspektifinden bakıldığında, bu ortak standartlaştırılmış öğeleri tek başına bırakmak genellikle daha iyidir. Kullanıcıya belirli öğelerin belirli bir boyutta göründüğü ve belirli şeyleri ifade ettiği öğretildi. Standart görünümü değiştirmek, arayüz gramerini değiştirir ve kullanıcının kafasını karıştırır.


14
Bu, belirli bağlamlarda harika. Bununla birlikte, ya bu bir açılış ekranındaysa ve gördüğünüz tek şey logo ve belki de ekranın ortasındaki bu küçük çark çevirici, biraz aptalca görünüyor. Apple'ın her duruma uyan tek şeyin kullanıcı arayüzü öğelerinde bile bir kavram olduğunu düşündüğüne inanamıyorum.
Ben Leggiero

6
@BenLeggiero'dan bahsetmiyorsunuz UIActivityIndicatorViewStyleWhiteLarge, bunun yerine küçük boyuttan bahsediyorsunuz , değil mi? Çünkü bu Largesürümün boş bir ekranda bile güzel bir boyuta sahip olduğunu düşünüyorum .
anlam meseleleri

2
.whiteLargeyapar! Teşekkür! Ayrıca UIActivityIndicatorView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))ve ayarladım activityIndicator.backgroundColor = UIColor(red: 255/255, green: 255/255, blue: 255/255, alpha: 0.38). 6 + / 7 + ekranlarda varsayılan ekran çok küçük
rockhammer

1
Boyutu artırmak için bir ölçekleme dönüşümü yaparsanız, bulanık görünecektir.
Gandalf458

165

Aşağıdakiler, 15 piksel genişliğinde bir etkinlik göstergesi oluşturacaktır:

#import <QuartzCore/QuartzCore.h>

...

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

TechZen'in cevabının duyarlılığını anlasam da, bir UIActivityIndicator'ın boyutunu nispeten küçük bir miktarda ayarlamanın gerçekten Apple'ın standartlaştırılmış arayüz deyimlerinin ihlali olduğunu düşünmüyorum - bir etkinlik göstergesinin 20px veya 15px olması, kullanıcının yorumunu değiştirmeyecektir. neler olduğunu.


1
ve etkinlik göstergeleri iPad'de çok küçük ve bir
webView

4
Bu piksellerin ölçeğini artırıyor gibi görünüyor, bu nedenle maalesef büyük miktarlar için kabul edilemez.
prewett

72

Swift 3.0 ve Swift 4.0

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

3
Tam olarak ihtiyacım olan şey. Bu en iyi cevap olmalı.
nocdib

Basit konular için tek satırlık çözümleri seviyorum! Şimdi tek sorun, nasıl anti-alias yapılacağıdır. İki kat büyüklüğünde Apple TV'de biraz sert görünüyor
Michele Dall'Agata

@ MicheleDall'Agata, iyi olduğundan daha özel yapmak istiyorsanız, iOS'ta kaliteli grafik ilerleme çubuğu için hala yerel bir çözüm yoktur, ancak uygulama boyutu ve uygulama performansı için yerel bcoz kullanmanızı öneririm
Harshil Kotecha

@HarshilKotecha Aslında daha sonra (en azından tvOS için) IB'de aktivite donanımı için "Büyük Beyaz" denen bir stil olduğunu öğrendim. Bu, normal olanın iki katı orana sahip, ben de bunu amaçladım. Düzenli olanlar çok küçük, belki tek bir hücre için iyidir.
Michele Dall'Agata

45

UIActivityIndicator'ı yeniden boyutlandırmak mümkündür.

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

Orijinal boyut 1.0f'dir. Artık boyutu uygun şekilde artırıp küçültebilirsiniz.


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

İşte Swift 3.0 ile çalışacak ve 0 ölçeklendirmeyi (ya da yasaklamak istediğiniz herhangi bir değeri) önlemek için kontrol eden bir uzantı :

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

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

40 puana (2x) ölçeklemek için böyle deyin:

activityIndicatorView.scale(factor: 2.0)


1

Yapabileceğiniz en iyi şey whiteLargestili kullanmaktır . let i = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.whiteLarge).

UIActivityIndicatorViewBu resimlerde de görebileceğiniz gibi boyutunun artırılması göstergenin boyutunu doğru bir şekilde değiştirmez.küçük gösterge "büyük" gösterge


1

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

Bu, göstergenin boyutunu dönüştürmek için beni çalıştı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.