UIActivityIndi​​catorのサイズを変更できますか?


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はそれをいじるのが好きではありません。

ただし、おそらくスケーリング変換を実行できます。しかし、それが視覚的にどのように影響するかはわかりません。

UIデザインの観点からは、通常、これらの一般的な標準化された要素をそのままにしておく方が良いでしょう。ユーザーは、特定の要素が特定のサイズで表示され、それらが特定のことを意味することを教えられました。標準の外観を変更すると、インターフェイスの文法が変更され、ユーザーが混乱します。


14
これは特定の状況では素晴らしいことです。ただし、これがスプラッシュスクリーンに表示されている場合、表示されるのはロゴと、画面の中央にある小さなこの小さなスピナーだけで、少しばかげているように見えます。アップルがUI要素のコンセプトでさえ、すべてに対応できるとは信じられません。
Ben Leggiero、2015

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 +画面では、デフォルトの画面は小さすぎます
ロックハンマー

1
サイズを大きくするためにスケーリング変換を行うと、ぼやけて見えます。
Gandalf458 2017

164

以下は、15px幅のアクティビティインジケーターを作成します。

#import <QuartzCore/QuartzCore.h>

...

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

TechZenの答えの感情は理解していますが、UIActivityIndi​​catorのサイズを比較的少量で調整することは、実際にはAppleの標準化されたインターフェイスのイディオムに違反しているとは思いません。何が起こっているのか。


1
iPadではアクティビティインジケーターが小さすぎて、webViewの中央に表示されます...
hokkuk 2013

4
これはピクセルを拡大するようですので、残念ながら大量には受け入れられません。
事前湿潤

68

Swift 3.0およびSwift 4.0

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

3
まさに私が必要としたもの。これが一番の答えになるはずです。
nocdib 2018

単純な問題に対する1行のソリューションが大好きです。今、唯一の問題はそれをアンチエイリアスする方法です。サイズが2倍になると、Apple TVでは少し粗く見えます
Michele Dall'Agata

@ MicheleDall'Agataそれでもカスタムを作成したい場合は、iOSの高品質グラフィックプログレスバーにネイティブソリューションはありませんが、アプリのサイズとパフォーマンスのネイティブbcozを使用することをお勧めします
Harshil Kotecha

@HarshilKotecha実際、私は後で(少なくともtvOSの場合)IBで "Large White"と呼ばれるアクティビティギアのスタイルがあることを発見しました。その方が普通の方の2倍のプロポーションを持っているので、それを目指しました。常連は小さすぎて、たぶん単一のセルに適しています。
Michele Dall'Agata

45

UIActivityIndi​​catorのサイズを変更することができます。

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

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

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

activityIndi​​cator.transform = CGAffineTransform(scaleX:1.75、y:1.75);

これは、インジケーターのサイズを変換するのに役立ちました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.