Установите ширину UITableViewCell

Я хочу создать UITableView с горизонтальным пространством следующим образом:

введите описание изображения здесь

Поэтому я нашел решение здесь

Но, похоже, что это не работает, функция setFrame не будет работать с iOS9, поэтому я нашел другое предложение использовать layoutSubviews

 override func layoutSubviews() { super.layoutSubviews() self.contentView.frame = UIEdgeInsetsInsetRect(self.bounds, UIEdgeInsetsMake(0, 10, 0, 10)) } 

Но это тоже не работает, вот что я получаю:

введите описание изображения здесь

Итак, как правильно добавить горизонтальное пространство, я использую Swift 2 , Xcode7 , Storyboard с пользовательским UITableViewCell

Итак, вот один из способов сделать это, создав пользовательскую ячейку.

Вы можете установить цвет фона в TableView на серый.

Затем в вашем обычном прототипе UITableViewCell

  1. Установите цвет фона прозрачным.
  2. Перетащите UIView на него и измените его цвет на белый или любой другой.
  3. Установите ограничения слева, справа, сверху и снизу, по крайней мере, 5 из представления в ячейку.
  4. Убедитесь, что вы используете методы делегата для установки автоматической высоты, а затем расчетной высоты, если ячейка будет иметь динамическую высоту.
  5. Также удалите разделитель в виде таблицы так, чтобы линии не было.
  6. Внутри представления вы можете сбросить ярлык, чтобы добавить текст.

Я думаю, что это должно служить вашей цели, дайте мне знать, как это происходит 🙂

Пожалуйста, не пытайтесь менять рамку ContentView, Apple не заявляет, что это возможно. У вас есть несколько вариантов здесь, в порядке предпочтения:

  • Для этого UICollectionView . UICollectionView делает совершенно тривиальным изменение потока между вашими различными ячейками. Подумайте о том, чтобы переключить свою реализацию на использование UICollectionView и взглянуть на подклассификацию UICollectionViewFlowLayout (или просто настроить ваш макет непосредственно в IB)
  • Если вы должны использовать UITableView : создайте класс, который инкапсулирует представление, которое вы хотели бы быть в ячейке. Затем заставьте таблицу видеть ширину экрана, а ячейки – высоту содержимого плюс вертикальный край. Добавьте свой просмотр непосредственно в contentView ячейки с помощью соответствующего кадра вставки.

Я думаю, вы не должны пытаться обновлять фрейм содержимого. Вы должны добавить представление (как родительское представление) в свой контентный вид, а затем применить все ограничения к этому UIView.

Вы можете попытаться подклассифицировать ячейку и переопределить setFrame:

 - (void)setFrame:(CGRect)frame { frame.origin.x += inset; frame.size.width -= 2 * inset; [super setFrame:frame]; } 

Вы также можете попробовать это решение. Если вы используете пользовательскую ячейку tableview в Xib, то

step1: RightClick on cell xib step2: Открыть как> исходный код step3: попытаться найти <tableViewCellContentView> тега <tableViewCellContentView> . step4: найдите тег autoresizingMask ниже <tableViewCellContentView> и добавьте widthSizable="YES" в <autoresizingMask> например

 `<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="1Ah-hd-rCV" id="Xqs-eb-z8W">` `<autoresizingMask key="autoresizingMask" widthSizable="YES"/>` `</tableViewCellContentView>` 

Это выглядит выше кода после настройки.

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

и если вы добавляете ячейку по программированию, это не поможет вам создать xib для tableviewCell и в раскадровке, это будет работать и вам нужно открыть исходный код, щелкнув правой кнопкой мыши по раскадровке.

поместите UIView в tableViewCell и сделайте ячейку фона прозрачной, а tableview вы хотите серого цвета, чем установите его цвет фона в серый цвет и сделайте размер UIView, который вы хотите отобразить, и сделайте это горизонтально растянутым в маске авторезистировки .

Надеюсь, что это поможет вам. Спасибо!

  • uiTableView выбрать предыдущую выбранную строку?
  • Возможно ли отключить щелчок на дополнительном компоненте View в пользовательском UITableViewCell?
  • Как добавить или удалить строки из UITableView во время выполнения?
  • Устранить разделитель tablefooterview uitableview
  • Как удалить предыдущий контент из ячейки
  • GADBannerView фиксируется внизу на экране в UITableViewController
  • Как лучше реализовать UITableView с двумя «вкладками»?
  • Попытка установить высоту ячейки в cellForRowAtIndexPath, после heightForRowAtIndexPath
  • Есть видео: после Peek и Pop (3D Touch) фон держит прокрутку
  • Проблема с cellForRowAtIndexPath
  • нужно дважды нажать в uitableviewcell для открытого просмотра
  • Давайте будем гением компьютера.