iOS Overlay View - Маскирование UITableViewController с представлением частично маскирует UITableViewController - PullRequest
1 голос
/ 28 марта 2012

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 Ответ

4 голосов
/ 28 марта 2012

Привет используйте что-то вроде кода ниже

-(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, чтобы вы могли вызывать его из любого представления в вашем коде.

здесь я установил вид на окно, а не на это, это, конечно, решит вашу проблему !!!!

...