Я не могу выровнять свои ячейки в tableView как на картинке - PullRequest
0 голосов
/ 15 января 2019

Мне нужно выровнять свои ячейки программно вертикально

cell.textLabel?.textAlignment = .center

enter image description here

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Сначала о логике. Поскольку у вас есть ярлыки с выравниванием текста по центру , как ваши ярлыки могут иметь выравнивание текста влево , как вы хотите?

У вас есть это:

enter image description here

но ваша цель должна быть такой

enter image description here

... просто сместился влево.


Итак, я думаю, что достичь этого с настройкой по умолчанию textLabel сложно, так как это встроенный стиль, который не поддерживает множество настроек.

Но вы можете создать свой собственный UITableViewCell подкласс с пользовательским UILabel.

Начните с перетаскивания этого ярлыка в ячейку прототипа и установите ведущее ограничение на значение, которое вы хотите (это будет пространство между левым краем ячейки и вашим ярлыком)

enter image description here

также устанавливает центр Y равным центру суперпредставления Y , так как нам нужно для нашего ярлыка одинаковое пространство сверху и снизу.

enter image description here

enter image description here


Теперь просто создайте пользовательский подкласс для своей ячейки и установите класс ячейки внутри раскадровки

class CustomCell: UITableViewCell {}

enter image description here

... затем подключите розетку с этикеткой к подклассу ячейки

class CustomCell: UITableViewCell {
    @IBOutlet weak var label: UILabel!
}

Продолжить настройку идентификатора для вашей ячейки

enter image description here

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

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath) as! CustomCell
    cell.label.text = "Title"
    return cell
}
0 голосов
/ 15 января 2019

Это

cell.textLabel?.textAlignment = .center

выравнивает текст внутри метки, вам также нужно

cell.textLabel?.center = cell.center
...