我可以更改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;

Answers:


50

大小由样式固定。这是一个标准化的接口元素,因此API不喜欢摆弄它。

但是,您可能可以对其进行缩放转换。但是,不确定在视觉上如何影响它。

仅从UI设计的角度来看,通常最好不留这些常见的标准化元素。用户被教导某些元素以某种大小出现,并且它们表示特定的事物。更改标准外观会更改界面语法,并使用户感到困惑。


14
在某些情况下,这很棒。但是,如果这是在初始屏幕中,并且您看到的只是徽标,也许是屏幕中间的这个小小的微调框,它看起来有点傻。我无法相信Apple认为“一刀切”甚至是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 +屏幕上,默认屏幕太小了
rockhammer

1
如果进行缩放变换以增加大小,它将显得模糊。
Gandalf458 '17

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的标准化界面习惯用法-活动指示器是20px还是15px不会改变用户的解释。发生了什么。


1
并且活动指示器在iPad上太小,在webView中间只有一个...
hokkuk 2013年

4
这似乎会放大像素,因此不幸的是,对于大量像素而言,这是不可接受的。
prewett

68

Swift 3.0和Swift 4.0

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

3
正是我所需要的。这应该是最佳答案。
nocdib

我喜欢简单问题的一线解决方案!现在唯一的问题是如何反别名。尺寸是苹果电视的两倍,看起来有点粗糙
Michele Dall'Agata '18

@ MicheleDall'Agata如果您要自定义,那么对于iOS中高质量的图形进度条仍然没有任何本地解决方案,这是个好习惯,但我建议使用应用程序大小和性能的本地bcoz
Harshil Kotecha

@HarshilKotecha实际上,我后来发现(至少对于tvOS)在IB中有一种称为“大白”的活动装备样式。那是正常人的两倍,这就是我的目标。常规值太小,可能只适合一个单元。
米歇尔·达尔·阿加塔

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
罗希特·芬迪

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

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

这使我改变了指标的大小。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.