Да, вы можете использовать табличное представление для достижения ваших требований.вам нужно будет выполнить следующие шаги:
Метод 1:
- Создайте две ячейки табличного представления XIB, одну с меткой левой стороны и изображением правой стороны,второй - с левым и правым изображениями.
- Сохраните один и тот же класс XIB, который вы создали, но с разными идентификаторами.
В табличном представлении cellForRowAtIndexPath
методреализуйте следующую логику.
extension ViewController: UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return datasourceArray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if(indexPath.row % 0 == 0) {
let cell = tableView.dequeueReusableCell(withIdentifier: "RightLabelTableViewCell", for: indexPath) as! CustomTablViewCell
cell.model = datasourceArray[indexPath.row]
return cell
} else {
let cell = tableView.dequeueReusableCell(withIdentifier: "LeftLabelTableViewCell", for: indexPath) as! CustomTablViewCell
cell.model = datasourceArray[indexPath.row]
return cell
}
}
}
Примечание: вы можете использовать один класс для TableViewCell с другим идентификатором и соответственно оформить свой xib.
Метод 2:
Переверните представление содержимого ячейки табличного представления таким образом, чтобы они поменялись местами в вашем пользовательском интерфейсе.
добавьте следующий код в ваш cellForRowAtIndexPath
а также добавить еще одну его часть, потому что ячейка для строки может вести себя странно из-за удаления:
extension UIView {
/// Flip view horizontally.
func flipX() {
transform = CGAffineTransform(scaleX: -transform.a, y: transform.d)
}
}
Использование:
cell.contentView.flipX()
cell.yourImage.flipX()
cell.youImageName.flipX()
Не забудьтедобавить еще часть в методе cellForRowAt
.