2012-03-28 1 views
1

iPhone - 5,1 (9B176)IOS Overlay View - Маскировка UITableViewController с целью частично маскировки UITableViewController

Я встречая непоследовательное поведение в наложении вид маски на вершине 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]` 

ответ

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

}

- (Недействительными) hideLoadingView {

[loadView removeFromSuperview]; 

}

объявляю методы в вас AppDelegate класс, так что вы можете вызвать его из любой точки зрения в вашем коде.

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

+0

Спасибо Нил. Часть вашего решения сработала. Но мне нужен маскированный вид с какой-то другой целью. Добавление подпрограммы в обработанное окно. [[appDelegate window] addSubview: ovController.view]; Однако я все еще удивляюсь, почему в случае UITableViewController вставка subview поверх табличного представления работает не так, как ожидалось. –

+0

не знаю точной причины, но вы можете сделать это, вставив таблицу и загрузив представление в viewcontroller ... я думаю, вы поняли мою точку зрения –

 Смежные вопросы

  • Нет связанных вопросов^_^