UITableViewController 中的 UIActivityIndicatorView
UIActivityIndicatorView in a UITableViewController
我目前正在更新我的一个应用程序。它从互联网上获取信息并使用 networkActivityIndicatorVisible 来显示和隐藏状态栏中的 Activity 指示器。我们收到的关于此的一个投诉是它太小,用户不知道他们的设备正在获取信息。所以我的想法是在我的视图中间使用旋转的 activity 轮子。如果您尝试从项目中拖出一个项目,它会将其放在一个单元格中,或者放在我创建的 header UIView 中。这不是我想要的,所以我以编程方式实现了它。
在 header 文件中。
@property (strong, nonatomic) UIActivityIndicatorView *mySpinner;
在实现文件中。
_mySpinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
_mySpinner.color = [UIColor blackColor];
_mySpinner.translatesAutoresizingMaskIntoConstraints = NO;
_mySpinner.hidesWhenStopped = YES;
然后我通过执行以下操作将纺车添加到我的视图中。随着我的约束。
[self.view addSubview:_mySpinner];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:_mySpinner
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeCenterX
multiplier:1
constant:0]];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:_mySpinner
attribute:NSLayoutAttributeCenterY
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeCenterY
multiplier:0.75
constant:0]];
[_mySpinner startAnimating];
我运行 代码,它运行良好。即使在我旋转时,微调器也在我想要的位置。然而,这就是问题所在,当我滚动 table 视图时,微调器会随之移动!
我知道这是因为我将微调器添加到 self.view 并使用 self.view 进行了所有约束。对于 UITableViewController,table 视图是 self.view。
该应用程序有几个 table 视图,它们都很长,很多都带有自定义单元格。我真的不想重新设计所有东西,但是有谁知道是否有 UITableViewController 的超级视图我可以将我的约束放在上面?我尝试了几件事,但没有任何效果。很抱歉问了这么长的问题,但我希望有人能帮忙。感谢阅读!
解决方案是访问您的应用程序的 window 然后附加 activity 指示器,如
UIWindow *frontWindow = [[UIApplication sharedApplication] keyWindow];
self.activity.center=frontWindow.center;
[frontWindow addSubview:self.activity];
[self.activity startAnimating];
我目前正在更新我的一个应用程序。它从互联网上获取信息并使用 networkActivityIndicatorVisible 来显示和隐藏状态栏中的 Activity 指示器。我们收到的关于此的一个投诉是它太小,用户不知道他们的设备正在获取信息。所以我的想法是在我的视图中间使用旋转的 activity 轮子。如果您尝试从项目中拖出一个项目,它会将其放在一个单元格中,或者放在我创建的 header UIView 中。这不是我想要的,所以我以编程方式实现了它。
在 header 文件中。
@property (strong, nonatomic) UIActivityIndicatorView *mySpinner;
在实现文件中。
_mySpinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
_mySpinner.color = [UIColor blackColor];
_mySpinner.translatesAutoresizingMaskIntoConstraints = NO;
_mySpinner.hidesWhenStopped = YES;
然后我通过执行以下操作将纺车添加到我的视图中。随着我的约束。
[self.view addSubview:_mySpinner];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:_mySpinner
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeCenterX
multiplier:1
constant:0]];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:_mySpinner
attribute:NSLayoutAttributeCenterY
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeCenterY
multiplier:0.75
constant:0]];
[_mySpinner startAnimating];
我运行 代码,它运行良好。即使在我旋转时,微调器也在我想要的位置。然而,这就是问题所在,当我滚动 table 视图时,微调器会随之移动!
我知道这是因为我将微调器添加到 self.view 并使用 self.view 进行了所有约束。对于 UITableViewController,table 视图是 self.view。
该应用程序有几个 table 视图,它们都很长,很多都带有自定义单元格。我真的不想重新设计所有东西,但是有谁知道是否有 UITableViewController 的超级视图我可以将我的约束放在上面?我尝试了几件事,但没有任何效果。很抱歉问了这么长的问题,但我希望有人能帮忙。感谢阅读!
解决方案是访问您的应用程序的 window 然后附加 activity 指示器,如
UIWindow *frontWindow = [[UIApplication sharedApplication] keyWindow];
self.activity.center=frontWindow.center;
[frontWindow addSubview:self.activity];
[self.activity startAnimating];