【问题标题】:Big activity indicator on iPhoneiPhone 上的大活动指示器
【发布时间】:2010-08-16 06:17:57
【问题描述】:

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

就像这篇文章中的一样,但不是全屏,只是活动指示器 How to create a full-screen modal status display on iPhone?

【问题讨论】:

标签: iphone objective-c uikit ios


【解决方案1】:

当我想显示这类指标时,我会使用以下方法。

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

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

希望这是您所需要的。

【讨论】:

    【解决方案2】:

    您的屏幕截图可能是对 David Sinclair 的 DSActivityView 模块的使用。具体来说,就是它的 DSBezelActivityView 组件。或者如果不是,它是一个紧密的副本。

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

    我一直使用 DSActivityView。很棒的图书馆。在拉取数据的同时把它扔掉,让用户和客户满意。

    【讨论】:

    • 很棒的课。我将保留它,以便在我的应用程序中进行一些 UX 标准化。它非常优雅,不会增加太多开销。
    【解决方案3】:

    一个选项:MBProgressHUD

    【讨论】:

    • 一个很棒的HUD的很棒的项目。
    【解决方案4】:

    我不认为截图是我的DSBezelActivityView;指标看起来有些不同。但它非常相似。

    注意,DSActivityView 及其子类不使用任何图像或笔尖;它们是纯代码。

    要回答最初的问题,很容易修改 DSBezelActivityView 以省略全屏灰色背景。您可以通过继承和覆盖 -setupBackground 方法来做到这一点:

    - (void)setupBackground;
    {
        [super setupBackground];
    
        self.backgroundColor = [UIColor clearColor];
    }
    

    希望这会有所帮助!

    【讨论】:

      【解决方案5】:

      试试这个简单的方法,对我来说效果很好......

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

      【讨论】:

        【解决方案6】:

        您实际上是在考虑使用两个 UIView 子类和一个自定义 .png 图像来获得您想要的外观。 灰色半透明框将是一个 UIImageView 对象,要获得您正在寻找的效果,您需要一个带有圆角的灰色正方形的 .png 文件,它不需要是最终大小,只要至少有角落之间的一个像素的直边它可以正常工作。然后,您将使用 UIImage 将其作为 UIImage 加载 stretchableImageWithLeftCapWidth:topCapHeight: 方法,这让您指定图像的顶部和左侧部分必须保持不变,并且每个方向上的 1 个像素切片将被拉伸以填充您使用图像的 UIImage 视图。@987654321 @ 有一个很好的例子来说明这是如何工作的。 因此,创建一个 UIImage,然后使用该图像创建一个 UIImageView,将其 opaque 属性设置为 NO,并将 alpha 属性设置为对您来说看起来不错的东西。将此添加为当前视图的子视图。 现在您只需要添加旋转进度指示器,这更容易,只需创建一个新的 UIActivityIndi​​catorView 并将其添加为您已经创建的 UIImageView 的子视图。 相同的基本方法用于在 iOS 应用程序中创建几乎任何可调整大小的元素。在 Apple 的 UICatalog 示例代码中有一些将它们用于按钮的示例。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多