2015-08-02 3 views
5

Я пытаюсь достичь представления, которое я издевался над эскизом. Я воспроизвел его на Android, потому что я действительно хорош на этой платформе. Я хорошо разбираюсь в iOS, но пользовательский интерфейс - это своего рода слабый момент. The ImageДобавление маржи к UITableViewCell

Я продлил UIViewController, и на моем StoryBoard есть верхняя часть, а внизу - таблица. Проблема, с которой я сталкиваюсь, заключается в том, чтобы сосредоточиться на UITableViewCell, чтобы выглядеть так, как в самом приложении. Ниже приведено решение, которое я пробовал. Но он просто сжимает все на вершине. NB. Я использую UIView рисовать эти крошечные линии в UITableViewCell

func configureTableView() { 
    //First One I tried then later commented it out 
    loanStateTable.rowHeight = UITableViewAutomaticDimension 
    loanStateTable.scrollToNearestSelectedRowAtScrollPosition(UITableViewScrollPosition.Middle, animated: true) 

    //Second One I tried 
    var edgeInset = UIEdgeInsets(top: 16, left: 16, bottom: 0, right: 16) 
    loanStateTable.contentInset = edgeInset 
} 

И раскадровку зрения UITableViewCell

Любая помощь будет оценена. Благодаря

Выход:

OutPut Image

+0

пожалуйста, вы можете добавить снимок экрана на выходе вы получаете. на симуляторе, работающем cmd + s, он сохранит снимки экрана на рабочий стол. – hasan83

+0

Вы хотите, чтобы эти две ячейки были центрированы по вертикали? – hasan83

+0

Я добавил вывод. И да, я хочу, чтобы они были центрированы по вертикали. –

ответ

17

Оставьте все как есть. Не пытайтесь вставить весь ваш TableView.Создание контейнера View внутри TableViewCell вместо:

enter image description here

Установите высоту строки:

enter image description here

Также в коде:

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    return 160.0 
} 

Укажите правильное расстояние до краев :

enter image description here

Теперь добавьте элементы и указать ограничения, а также:

enter image description here enter image description here enter image description here enter image description here

Не забудьте установить cellIdentifier:

enter image description here

привести в тренажере:

enter image description here

Если вы хотите посмотреть на него под капотом: I've uploaded it as github project

0

Из ваших скриншотов, кажется, что у вас есть проблемы с системой автоматической компоновки и динамической ячейкой. Для этого рекомендуется прочитать это очень хорошее answer о переполнении стека, в котором объясняется, как создавать динамические ячейки с автоматическим расположением. Важно учитывать, что создание представлений с автоматическим макетом очень быстрое и интуитивно понятное, но оно дорого стоит с точки зрения производительности. Эта проблема акцентируется на UITableView, где свиток может получиться негласно. Если у вас есть простой элемент (только несколько вида и иерархия вида с несколькими уровней) может быть хорошо, но менеджер Автокомпоновки я предлагаю:

  • указать значение для свойства estimatedRowHeight, если все клетки имеют такая же высота
  • реализует метод tableView(_:estimatedHeightForRowAtIndexPath:)UITableViewDelegate, если ячейки имеют разную высоту.

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

1

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

подход:

Я обычно играю это, добавляя дополнительные ячейки (ы) в начале и/или конце UITableView

#define cell_height 100 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return array.count + 1; 
} 

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    if (indexPath.row > 0) 
     return cell_height; 
    else 
    { 
     CGFloat tableHeight = tableview.frame.size.height; 
     CGFloat contentHeight = array.count * cell_height; 
     CGFloat whiteAreaHeight = tableHeight - contentHeight; 
     if (whiteAreaHeight > 0) 
      return whiteAreaHeight/2.0; 
     else 
      return 0; 
    } 
} 

- (UITableViewCell *)tableView:(nonnull UITableView *)tableView cellForRowAtIndexPath:(nonnull NSIndexPath *)indexPath 
{ 
    if (indexPath.row > 0) 
    { 
     NSInteger realArrayIndex = indexPath.row - 1; 
     // your existing code here 
     return cell; 
    } 
    else 
    { 
     //return empty cell. add it to the storyboard with different identifier and get it. 
    } 
} 

Я надеюсь, что помогает!

+0

Я попробовал ваш ответ, и это тоже сработало ... Спасибо –

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