2012-03-28 7 views
1

iPhone - 5.1 (9B176)iOS Overlay View - Maskierung UITableViewController mit Blick teilweise maskiert UITableViewController

Ich habe inkonsistentes Verhalten wurde Antreffen eine Maskenansicht auf einen UITableViewController in Überlagerung, wie unten in Abbildung dargestellt. Jedermann ist auf dieses Verhalten gestoßen, wenn ja, bitte schlagen Sie irgendwelche Lösungen vor?

Partially masked view on top of UITableViewController

Unten ist der Code habe ich verwendet Maskenansicht hinzuzufügen:

//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]; 

ich auch

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

Antwort

4

Hallo etwas versucht haben, verwenden wie unten Code

-(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]; 

}

Deklarieren Sie diese Methoden in Ihnen AppDelegate Klasse, so dass Sie es aus einer beliebigen Ansicht im Code aufrufen können.

Hier habe ich einen Blick über das Fenster nicht in Sicht gesetzt dies sicher lösen Ihr Problem !!!!

+0

Danke Neel. Ein Teil Ihrer Lösung hat funktioniert. Aber ich brauche eine maskierte Ansicht mit einem anderen Zweck. Das Hinzufügen von Teilansichten zum Fenster funktionierte. [[Fenster appDelegate] addSubview: ovController.view]; Ich frage mich jedoch immer noch, warum im Falle von UITableViewController das Einfügen einer Teilansicht oberhalb einer Tabellenansicht nicht wie erwartet funktioniert. –

+0

weiß nicht genau Grund, aber Sie können dies tun, indem Sie Tabelle und laden Ansicht in Viewcontroller ... ich denke, du hast meinen Punkt –