iOS覆盖视图 - 使用视图屏蔽UITableViewController部分屏蔽UITableViewController

时间:2012-03-28 11:07:20

标签: iphone ios5 uitableview mask

iPhone - 5.1(9B176)

我在UITableViewController顶部覆盖蒙版视图时遇到了不一致的行为,如下图所示。有人遇到过这种行为,如果有,请建议使用任何解决方案?

Partially masked view on top of UITableViewController

下面是我用来添加掩码视图的代码:

//Add the overlay view.
if(ovController == nil) {
    NSString *cellIdentifier = @"overlayVC";
    ovController = [[self storyboard] instantiateViewControllerWithIdentifier:cellIdentifier];
}

CGFloat yaxis = self.navigationController.navigationBar.frame.size.height;
CGFloat width = self.view.frame.size.width;
CGFloat height = self.view.frame.size.height;

CGRect frame = CGRectMake(0, yaxis, width, height);
ovController.view.frame = frame;
ovController.view.alpha = 0.85;
ovController.delegate = self;

UIView *aboveView = self.parentViewController.view;

[self.tableView insertSubview:ovController.view aboveSubview:aboveView];

我也试过

`[self.tableView insertSubview:ovController.view aboveSubview:self.tableView]`

1 个答案:

答案 0 :(得分:4)

您可以使用以下代码

-(void) showLoadingView {

//NSLog(@">>>>>>>>>>>>>>>>> loading view Landscape right ");
if (loadView == nil) {
    loadView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 480.0)];
    loadView.opaque = NO;
    loadView.backgroundColor = [UIColor clearColor];
    //loadView.alpha = 0.8;

    viewBack = [[UIView alloc] initWithFrame:CGRectMake(95, 230, 130, 40)];
    viewBack.backgroundColor = [UIColor blackColor];
    viewBack.alpha = 0.7f;
    viewBack.layer.masksToBounds = NO;
    viewBack.layer.cornerRadius = 8; 

    spinningWheel = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(5.0, 5.0, 30.0, 30.0)];
    [spinningWheel startAnimating];
    //        spinningWheel.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;
    [viewBack addSubview:spinningWheel];
    [spinningWheel release];        

    UILabel *lblLoading = [[UILabel alloc] initWithFrame:CGRectMake(23, 6, 110, 25)];
    lblLoading.backgroundColor = [UIColor clearColor];
    lblLoading.font = [UIFont fontWithName:@"Helvetica-Bold" size:16.0];
    lblLoading.textAlignment = UITextAlignmentCenter;
    lblLoading.textColor = [UIColor whiteColor];
    lblLoading.text = @"Loading...";
    [viewBack addSubview:lblLoading];
    [loadView addSubview:viewBack];
}    

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
    loadView.frame = iphoneFrame;
    viewBack.frame = loadiPhone;        
}
else
{
    loadView.frame = ipadFrame;  
    viewBack.frame = loadiPad;
}

[self.window addSubview:loadView];

}

- (void)hideLoadingView {

[loadView removeFromSuperview];

}

在APPdelegate类中声明此方法,以便您可以从代码中的任何视图调用它。

在这里我已经设置了一个窗口视图而不是在视图中这确定可以解决您的问题!!!!