2014-11-10 3 views
1

Я пытаюсь добавить представление с высотой 50 до разделов таблицы, я добавил представление в конструктор интерфейса и изменил его размер до 50, и все выглядит хорошо в построителе интерфейсов, но как только я тестирую его устройство или симулятор, вид открывается с максимальной высотой экрана, и, похоже, я не могу контролировать его высоту независимо от того, какое значение я использую, вид занимает весь экран hightВысота UIView перед секцией таблицы

Как я могу заставить высоту представления 50?

Xcode Test Table View Controller

Xcode Test Table View Controller

Xcode Test Table View Controller

ответ

0

Попробуйте использовать autolayout и установить постоянную высоту.

+0

Кажется, я не могу установить постоянную высоту представления для просмотра в автозапуске, я ошибаюсь? – trrrrrrm

+0

@ laith.ar Вы можете установить минимальную высоту в ограничении. Вы добавили какие-либо ограничения? – Freddy

+0

Вы должны добавить константу. Просто выберите + щелкнуть мышью по виду и перетащить на один и тот же вид. Вам будет предложено выбрать ограничение для добавления в представление. – Pablosproject

0

Снимите флажок «Авторезистировать Subview» для родительского представления, в котором эти представления добавлены и проверьте вывод. Это может решить проблему, если какое-то ограничение пытается изменить размер добавляемого представления.

+0

Я пытался не работать – trrrrrrm

+0

Пожалуйста, проверьте, что вы включили «размерный класс» для своего IB. Если да, то представление, которое вы разместили, должно быть изменено на устройство, которое вы реализуете. –

0

Если вы хотите добавить и UIView перед секцией таблицы, это представление будет также перед табличным представлением. И, по крайней мере, по коду это представление не будет прокручиваться.

Вы должны изменить ваш TabelViewController на ViewController и добавить делегат таблицыViewView. И не уверен, но вы должны иметь что-то вроде этого:

@interface TestTableViewController : UITableViewController 

И вы должны быть:

@interface TestTableViewController : UIViewController <UITableViewDataSource,UITableViewDelegate> 

Тогда: В раскадровке добавить вид и TableView (оба должны иметь на том же уровне). Добавить Сдерживает подключить делегатов и создать IBOutlet для обоих:

@property (nonatomic,strong) IBOutlet UIView *superHeader; 
@property (nonatomic, strong) IBOutlet UITableView *tableView; 

С этим две розетки, если вы хотите, вы можете закодировать в superHeader исчезают при прокрутке до точки, здесь пример (Помните Tableview является Scrollview сын).

-(void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    if (scrollView.contentOffset.y > 100) 
{ 
    [UIView animateWithDuration:0.3 animations:^{ 
     // Be carfuly if you are navigationBar (64 ptos) and depens of transparency property 
     self.tableView.frame = CGRectMake(0, -50, self.view.bounds.size.width, 50); 
    self.tableView.frame = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height); 

    }]; 
} else if(scrollView.contentOffset.y < 80) { 
     [UIView animateWithDuration:0.3 animations:^{ 
     // Be carfuly if you are navigationBar (64 ptos) and depens of transparency property 
     self.tableView.frame = CGRectMake(0, 0, self.view.bounds.size.width, 50); 
     self.tableView.frame = CGRectMake(0, 50, self.view.bounds.size.width, self.view.bounds.size.height - 50); 

    }]; 

} 


} 
0

Как вы добавили представление в UITableView в Interface Builder?

Вы хотите, чтобы представление отображалось перед каждым разделом? Затем вы можете добавить его в качестве вида заголовка для каждой секции с помощью

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section. 

Вы можете задать высоту для него с помощью

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section; 

Эти оба метода UITableViewDelegate.

Если вы не хотите его для каждого раздела, но вам нужно только одно представление, которое отображается в верхней части TableView, вы можете попробовать свойство tableHeaderView UITableView. Вы можете установить любой UIView в качестве заголовка, используя это свойство. Смотрите эту StackOverflow тема: Adding iOS UITableView HeaderView (not section header)

0

Если вы хотите 50 фиксированную высоты затем добавить ограничение к виду «фиксированной высоту: 50»

Причины неизмененного кадра является автоматической раскладкой. SetFrame отлично работает, если вы отключите автомат.

Надеется, что это поможет вам

+0

фиксированная высота игнорируется по какой-либо причине – trrrrrrm

0

Я чувствую, вы не используете prototypecell из tableViewcontroller. Попытайтесь добавить в него настройку. Это может сработать.

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