嗨,我正在尝试通过单击按钮查看活动指示器。我试过但我遇到了一些问题。如果我将活动指示器拖到我的故事板但在运行我的应用程序时可见,我想在单击按钮时显示。在我的应用程序中,我正在给照片上传选项。因此,如果他们点击上传按钮,我想查看活动指标。 ..
这是我累了的代码,但它不起作用。
这是我的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];
}
并且我还有一些其他问题,我看到代码here问题是
[yourView addSubview:spinner];
在你的视图中,我给出了我的uiviewcontroller名称,但是我给出了错误,我已经改为
[self.view addSubview:spinner];
请告诉我我在哪里做错了什么是正确的做法..谢谢
答案 0 :(得分: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];
}
答案 1 :(得分: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];
}
答案 2 :(得分: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;
}
}
我建议您看到这个答案:How to get orientation-dependent height and width of the screen?重新定位您的微调器。
答案 3 :(得分:0)
如果您正在使用界面构建器,例如 Storyboard 或 XIB ,那么只需设置框架并将其自行设置。如果您想在运行时更改它的属性,只需使用您使用的 IBOutlet 。 您无需再次实例化,只需使用其getter和setter来相应地使用它。所以你可以这样做。
- (IBAction)click:(id)sender
{
[self.spinner startAnimating];
}
并在使用之前合成微调器。
如果您想以编程方式使用它,请从XIB中删除它并删除与其对应的所有引用。并在.h文件中声明
UIActivityIndicatorView *spinner;
或者你可以制作一个属性
@property(nonatomic, strong)UIActivityIndicatorView *spinner;
并使用您自己的代码。