0

您好我正在尝试通过单击按钮查看活动指示器。我已经尝试过,但我遇到了一些问题。如果我将活动指示器拖到我的情节提要上,但在运行我的应用程序时它是可见的,我想在单击按钮时显示。在我的应用程序中,我提供了照片上传选项。因此,如果他们单击上传按钮,我想查看活动指示器。..

这是我已经厌倦但它不起作用的代码。

这是我的 h 文件,我在其中实现了活动指示器和按钮..

- (IBAction)click:(id)sender;
 @property (strong, nonatomic) IBOutlet UIActivityIndicatorView *spinner;

这是我在我的 m 文件中使用的代码...

-(void)temp
{
 spinner = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
 spinner.frame = CGRectMake(0.0, 0.0, 40.0, 40.0);
 [spinner setCenter:CGPointMake(480/2.0, 128.0/2)]; // (mid of screen) I do this because I'm in landscape mode
 [self.view addSubview:spinner];
 [spinner startAnimating];
 [spinner release];
}

我在我的按钮中调用这个函数..

- (IBAction)click:(id)sender {
[self temp];
}

而且我还有其他一些问题我在这里看到了代码问题是

[yourView addSubview:spinner]; 

在你看来,我给了我的 uiviewcontroller 名称,但它给出的错误我已更改为

[self.view addSubview:spinner];

请告诉我我做错了什么以及正确的方法是什么..谢谢

4

4 回答 4

1

伙计,我遇到了问题...我认为您在白色视图上添加了白色活动指示器,这就是为什么它没有显示但它确实存在所以...使用其他样式UIActivityIndicatorViewStyleGray

-(void)temp
{
 spinner = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
 spinner.frame = CGRectMake(0.0, 0.0, 40.0, 40.0);
 [spinner setCenter:CGPointMake(480/2.0, 128.0/2)]; // (mid of screen) I do this because I'm in landscape mode
 [self.view addSubview:spinner];
 [spinner startAnimating];
 [spinner release];
}
于 2014-02-20T07:07:13.833 回答
0

首先,因为您已经有一个微调器的 IBOutlet,所以不要在 temp 方法中分配一个新的。修改您的 temp 方法,如下所示:

  -(void)temp
    {
      spinner.frame = CGRectMake(0.0, 0.0, 40.0, 40.0);
     [spinner setCenter:CGPointMake(480/2.0, 128.0/2)]; // (mid of screen) I do this because I'm in landscape mode
     [self.view addSubview:spinner];
     [spinner startAnimating];
    }
于 2014-02-20T06:56:48.747 回答
0

假设您的微调器连接到您的视图。您可以在您viewDidLoad的视图中设置视图,然后在您点击按钮时显示:

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.spinner = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
    self.spinner.frame = CGRectMake(0.0, 0.0, 40.0, 40.0);
    [self.spinner setCenter:CGPointMake(480/2.0, 128.0/2)]; // (mid of screen) I do this because I'm in landscape mode
    self.spinner.hidden = YES;
}

- (IBAction)click:(id)sender
{
    self.spinner.hidden = NO;
    [self.spinner startAnimating];

     // Additionally you can show spinner in top bar
    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
}

- (void)stopSpinner
{
    if (self.spinner.isAnimating) {
        self.spinner.hidden = YES;
        [self.spinner stopAnimating];

        // And hide it when you don't need it anymore
        [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
    }
}

我建议你看看这个答案:如何获得与方向相关的屏幕高度和宽度?重新定位微调器。

于 2014-02-20T07:03:56.217 回答
0

如果您使用的是StoryboardXIB之类的界面构建器,那么只需在其中设置框架和 evrything。如果您想在运行时更改它的属性,只需使用您使用过的IBOutlet。您无需再次实例化,只需使用它的 getter 和 setter 来相应地使用它。所以在这里你可以做到。

- (IBAction)click:(id)sender 
  {
    [self.spinner startAnimating];
  }

并在使用前合成微调器

如果您想以编程方式使用它,请将其从 XIB 中删除并删除与其对应的所有引用。并在 .h 文件中声明

UIActivityIndicatorView *spinner;

或者你可以做一个财产

@property(nonatomic, strong)UIActivityIndicatorView *spinner;

并且只需使用您自己的代码。

于 2014-02-20T07:04:08.533 回答