iPhone上的大型活动指示器

11

有人知道如何显示一个带旋转活动指示器的圆角正方形吗?它在许多应用程序中使用。如果你不知道我在说什么,它看起来像当你在Mac上更改音量时的指示器,但背景较暗。我不确定它是否内置于iOS中还是由某人制作。

就像这篇文章中的那个一样,但不是全屏幕,只是活动指示器 如何在iPhone上创建全屏模态状态显示?


阅读此内容。http://developer.apple.com/iphone/library/documentation/uikit/reference/UIActivityIndicatorView_Class/Reference/UIActivityIndicatorView.html - Gary
6个回答

19

这是我在展示那种指示器时使用的东西。

UIView *loading = [[UIView alloc] initWithFrame:CGRectMake(100, 200, 120, 120)]; 

loading.layer.cornerRadius = 15;
loading.opaque = NO;
loading.backgroundColor = [UIColor colorWithWhite:0.0f alpha:0.6f];

UILabel *loadLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 25, 81, 22)];

loadLabel.text = @"Loading";
loadLabel.font = [UIFont boldSystemFontOfSize:18.0f];
loadLabel.textAlignment = UITextAlignmentCenter;
loadLabel.textColor = [UIColor colorWithWhite:1.0f alpha:1.0f];
loadLabel.backgroundColor = [UIColor clearColor];

[loading addSubview:loadLabel];
[loadLabel release];

UIActivityIndicatorView *spinning = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
spinning.frame = CGRectMake(42, 54, 37, 37);
[spinning startAnimating];

[loading addSubview:spinning];
[spinning release];

loading.frame = CGRectMake(100, 200, 120, 120);

然后,您只需将“loading”视图添加到您选择的视图中即可。

希望这是您所需要的。


14

你的截图很可能是使用David Sinclair的DSActivityView模块,具体来说是其中的DSBezelActivityView组件。如果不是,那它应该是一个相似的副本。

http://www.dejal.com/developer/dsactivityview

我经常使用DSActivityView库,非常好用。在拉取数据时弹出此组件能够让用户和客户感到满意。


很棒的课程。我会将它保留下来,用于我的应用程序中的一些UX标准化。它非常优雅,而且不会增加太多开销。 - geerlingguy

11

一个令人惊叹的HUD项目。 - Exegesis

5
我不认为那个截图是我DSBezelActivityView的;度量标准看起来有点不同。但非常相似。
注意,DSActivityView及其子类不使用任何图像或nibs;它们只是纯粹的代码。
回答最初的问题,很容易修改DSBezelActivityView以省略全屏灰色背景。您可以通过子类化并覆盖-setupBackground方法来实现这一点:
- (void)setupBackground;
{
    [super setupBackground];

    self.backgroundColor = [UIColor clearColor];
}

希望这能帮到你!

2
尝试这个简单的方法,对我来说很有效...
UIActivityIndicatorView *activityIndicator= [[UIActivityIndicatorView alloc]initWithFrame:CGRectMake(0, 0, 50, 50)];
activityIndicator.layer.cornerRadius = 05;
activityIndicator.opaque = NO;
activityIndicator.backgroundColor = [UIColor colorWithWhite:0.0f alpha:0.6f];
activityIndicator.center = self.view.center;
activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray;
[activityIndicator setColor:[UIColor colorWithRed:0.6 green:0.8 blue:1.0 alpha:1.0]];
[self.view addSubview: activityIndicator];

0
你实际上需要使用两个UIView子类和一个自定义的.png图像来获得你想要的外观。 灰色半透明框将是一个UIImageView对象,为了获得你想要的效果,你需要一个灰色正方形带圆角的.png文件,它不需要是最终大小,只要在每个角之间有至少一个像素的直边就可以。然后,您将使用UIImage的stretchableImageWithLeftCapWidth:topCapHeight:方法将其加载为UIImage,这样您就可以指定必须保持相同的图像的顶部和左侧部分,并且每个方向的1像素切片将被拉伸以填充您在其中使用图像的UIImage视图。http://www.bit-101.com/blog/?p=2275有一个很好的例子说明了这是如何工作的。 因此,创建UIImage,然后使用此图像创建UIImageView,将其opaque属性设置为NO,将alpha属性设置为您认为合适的值。将其添加为当前视图的子视图。 现在,您只需要添加旋转进度指示器,这更容易,只需创建一个新的UIActivityIndicatorView并将其添加为您已经创建的UIImageView的子视图即可。 在iOS应用程序中创建几乎任何可调整大小的元素都使用相同的基本方法。在Apple的UICatalog示例代码中有一些使用它们制作按钮的示例。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接