101

割り当て中にどのサイズを指定しても、固定サイズのみが表示されます。それを増やすことは可能ですか?

コード:

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;
4

10 に答える 10

167

以下は、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の標準化されたインターフェイスイディオムに違反しているとは思いません。アクティビティインジケータが20pxか15pxかは、ユーザーの解釈を変えることはありません。何が起こっているのか。

于 2012-03-01T20:18:53.413 に答える
85

Swift3.0およびSwift4.0

self.activityIndi.transform = CGAffineTransform(scaleX: 3, y: 3)
于 2017-06-19T10:56:06.113 に答える
52

サイズはスタイルによって決まります。これは標準化されたインターフェース要素であるため、APIはそれをいじるのが好きではありません。

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

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

于 2010-04-14T14:33:24.273 に答える
45

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

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

元のサイズは1.0fです。次に、それに応じてサイズを増減します。

于 2015-10-27T08:39:59.790 に答える
13

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)
于 2016-12-12T05:00:46.603 に答える
4

これは、 Swift 3.0で動作し、0スケーリング(または禁止したい値)を防ぐためのチェックを行う拡張機能です。

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

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

40ポイント(2倍)にスケーリングするようにそれを呼び出します:

activityIndicatorView.scale(factor: 2.0)
于 2017-03-21T20:34:13.543 に答える
2

他にも、遊ぶことができる便利な「CGAffineTransform」トリックがたくさんあります。詳細については、AppleDeveloperLibraryリファレンスを参照してください。

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

幸運を!

于 2013-05-22T15:50:31.483 に答える
2

あなたができる最善のことは、whiteLargeスタイルを使用することです。 let i = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.whiteLarge)

UIActivityIndicatorViewこれらの写真でわかるように、のサイズを大きくしても、インジケーターのサイズは適切に変更されません。小さなインジケーター

于 2018-06-02T19:31:28.603 に答える
1

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

これは、インジケーターのサイズを変換するために私を動かしました。

于 2020-02-29T02:36:20.220 に答える
0

はい、すでに回答済みですので、UIActivityIndi​​catorViewの表示サイズはtransformプロパティを使用して変更できます。正確なインジケーターサイズを設定/取得できるようにするために、単純な拡張機能を追加しました。

extension UIActivityIndicatorView {

var imageSize: CGSize {
    let imgView = subviews.first { $0 is UIImageView }
    return imgView?.bounds.size ?? .zero
}

var radius: CGFloat {
    get {
        imageSize.width * scale / 2.0
    }
    set {
        let w = imageSize.width
        scale = (w == 0.0) ? 0 : newValue * 2.0 / w
    }
}

var scale: CGFloat {
    get {
        // just return x scale component as this var has meaning only
        // if transform of scale type, and x and y scales are same)
        transform.a
    }
    set {
        transform = CGAffineTransform(scaleX: newValue, y: newValue);
    }
}

}

この拡張機能を使用すると、たとえば簡単に書くことができます

indicatorView.radius = 16.0

UIActivityIndi​​catorViewのフレームがゼロであるため、他のビューからインジケーターの正確な間隔を設定する必要がある場合にも役立ちます。

于 2022-01-12T20:48:20.920 に答える