当uitableview向下滚动时,UIView无法正确显示

时间:2014-05-16 02:10:55

标签: objective-c uitableview uiview

我正在实施某种加载屏幕,其中包含一个黑色的uiview,并在其中心有一个微调器。

当桌面视图向下滚动并加载时,加载屏幕位于顶部,如果桌面视图已滚动到底部,则加载屏幕将消失。

功能

UIView *blackScreen = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
blackScreen.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.5];
blackScreen.tag = LOADING_SCREEN_TAG;

UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];

spinner.center = CGPointMake(CGRectGetWidth(self.view.bounds)/2,
                             CGRectGetHeight(self.view.bounds)/2.3);

spinner.tag = SPINNER_TAG;

[spinner startAnimating];

[self.view addSubview:blackScreen];
[self.view addSubview:spinner];

[self.view setUserInteractionEnabled:NO];

2 个答案:

答案 0 :(得分:0)

您需要添加contentOffset,我想引用您的page来解释其使用情况。

无论如何,这是解决方案,这是假设tableview的变量名是tableView并设置为类的属性:

CGRect loadingScreenFrame = CGRectMake([[UIScreen mainScreen] bounds].origin.x + self.tableView.contentOffset.x,
                                       [[UIScreen mainScreen] bounds].origin.y + self.tableView.contentOffset.y,
                                       [[UIScreen mainScreen] bounds].size.width,
                                       [[UIScreen mainScreen] bounds].size.height);

UIView *blackScreen = [[UIView alloc] initWithFrame:loadingScreenFrame];
blackScreen.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.5];
blackScreen.tag = LOADING_SCREEN_TAG;

UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];

spinner.center = CGPointMake((CGRectGetWidth(self.view.bounds)/2) + self.tableView.contentOffset.x,
                             (CGRectGetHeight(self.view.bounds)/2.3) + self.tableView.contentOffset.y);

spinner.tag = SPINNER_TAG;

[spinner startAnimating];

[self.view addSubview:blackScreen];
[self.view addSubview:spinner];

[self.view setUserInteractionEnabled:NO];

答案 1 :(得分:0)

解决方案是不将旋转视图添加到tableview,而是添加到其superview。看起来您可能正在使用UITableViewController,这意味着您需要重新构建代码以使用UIViewController来实现此功能。将UITableView和微调器视图添加到UIViewController的视图中也可以实现您所需要的,而无需根据内容偏移设置中心。