2015-08-31 2 views
3

У меня есть табличное представление, и я хочу добавить в качестве подзаголовка серый вид с другим видом, чтобы подражать всплывающему окну. Проблема в том, что серый вид не распространяется на весь телевизор, а subview, где у меня есть мои кнопки, не все видно, если отображается нижняя часть телевизора.Получить видимый прямоугольник tableview

Вот мой код:

- (IBAction)orderButtonAction:(id)sender { 

    _grayView = [[UIView alloc]init]; 
    _grayView.frame = [[UIScreen mainScreen]bounds]; 
    _grayView.backgroundColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.7]; 
    _grayView.hidden = NO; 
    _profileOrderView.hidden = NO; 
    _tableView.scrollEnabled = NO; 

    _orderButtonOutlet.hidden = YES; 
    _profileOrderView.center = self.view.center; 
    [_grayView addSubview:_profileOrderView]; 
    [_tableView addSubview:_grayView]; 

} 

Есть ли способ, чтобы получить видимый прямоугольник телевизора и вставить мой серый вид там?

+0

Возможный дубликат [Получение видимого прямоугольника UIView] (http://stackoverflow.com/questions/4373112/getting-a-uiviews-visible-rectangle) –

+0

Спасибо @ iosDev82, что не решает мою проблему вообще , –

+0

Вы хотите, чтобы этот 'серыйView' был выше' tableView', правильно? Попробуйте добавить в качестве поднабора 'tableView.parent' (это будет' self.view'), а затем сделать '[self.view bringSubviewToFront: _grayView]'? – aramusss

ответ

2

Если вы хотите, чтобы greyView охватывал весь UITableView, вы должны установить рамку greyView как [greyView setFrame:tableView.bounds].

Если вы хотите, чтобы он отображал только отображаемую площадь таблицыView, вы должны использовать CGRectIntersection(self.frame, superview.bounds); и установить его как фрейм.

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