我可以更改 UIActivityIndi​​cator 的大小吗?

Posted

技术标签:

【中文标题】我可以更改 UIActivityIndi​​cator 的大小吗?【英文标题】:Can I change the size of UIActivityIndicator? 【发布时间】:2011-02-07 22:47:00 【问题描述】:

无论我在分配时给它多少大小,它都只显示固定大小。有可能增加吗?

代码:

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;

【问题讨论】:

检查这个***.com/questions/8585715/… 【参考方案1】:

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)

【讨论】:

【参考方案2】:

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

这对我改变指标的大小很有帮助。

【讨论】:

【参考方案3】:

您能做的最好的事情就是使用whiteLarge 样式。 let i = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.whiteLarge).

增加UIActivityIndicatorView 的大小不会改变指标的大小,正如您在这些图片中看到的那样。

【讨论】:

【参考方案4】:

Swift 3.0 和 Swift 4.0

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

【讨论】:

正是我需要的。这应该是最佳答案。 我喜欢简单问题的一站式解决方案!现在唯一的问题是如何反别名它。两倍的尺寸在 Apple TV 上看起来有点粗糙 @MicheleDall'Agata 如果你想定制的话,ios 中的高质量图形进度条仍然没有任何原生解决方案,但我建议使用原生 bcoz 的应用程序大小和应用程序性能 @HarshilKotecha 实际上我后来发现(至少对于 tvOS)在 IB 中有一种称为“大白”的活动装备样式。那一个的比例是正常的两倍,这就是我的目标。常客太小了,可能对一个单元格来说很好。【参考方案5】:

这是一个可与 Swift 3.0 一起使用的扩展,并检查以防止 0 缩放(或您想要禁止的任何值):

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

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

这样称呼它以扩展到 40 pts (2x):

activityIndicatorView.scale(factor: 2.0)

【讨论】:

【参考方案6】:

可以调整 UIActivityIndi​​cator 的大小。

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

原始尺寸为 1.0f。现在您可以相应地增加和减小尺寸。

【讨论】:

let transform = CGAffineTransformMakeScale(1.5, 1.5) activityIndicator.transform = transform【参考方案7】:

您还可以使用许多其他有用的“CGAffineTransform”技巧。有关详细信息,请参阅 Apple Developer Library 参考:

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

祝你好运!

【讨论】:

【参考方案8】:

以下将创建一个 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 都不会改变用户对正在发生的事情的解释。

【讨论】:

而 iPad 上的活动指示器太小了,在 webView 中间有一个... 这似乎放大了像素,所以不能接受大量的,不幸的是。【参考方案9】:

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

但是,您可能可以对其进行缩放变换。但是,不确定这将如何影响它的视觉效果。

从 UI 设计的角度来看,通常最好不要管这些常见的标准化元素。用户已被告知某些元素以特定大小出现并且它们意味着特定的事物。改变标准外观会改变界面语法并使用户感到困惑。

【讨论】:

在某些情况下这很棒。但是,如果这是在启动屏幕中,而您看到的只是徽标,并且可能是屏幕中间的这个很小的小微调器,它看起来有点傻。我不敢相信 Apple 会认为一刀切甚至是 UI 元素中的一个概念。 @BenLeggiero 你不是在谈论UIActivityIndicatorViewStyleWhiteLarge,而是在谈论小尺寸,对吧?因为我觉得这个Large 版本即使在空屏上也有不错的尺寸。 .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+ 屏幕上,默认屏幕太小了 如果你做一个缩放变换来增加尺寸,它看起来会很模糊。

以上是关于我可以更改 UIActivityIndi​​cator 的大小吗?的主要内容,如果未能解决你的问题,请参考以下文章

带有 UIActivityIndi​​catorView 的 iOS 7 样式弹出窗口/警报视图

在 AVPlayer 缓冲时设置 UIActivityIndi​​catorView?在目标 c

当我尝试停止动画 UIActivityIndi​​catorView 时内存崩溃

为啥我的 UIActivityIndi​​catorView 只显示一次?

UIActivityIndi​​catorView 不会在正确的时间停止

UIActivityIndi catorView未在webview中显示