Как установить угловой радиус для ячеек представления коллекции различного размера - PullRequest
0 голосов
/ 08 июня 2019

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

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

1) Как изменить размер, чтобы получить овальную форму, а также 2) Почему между некоторыми ячейками есть более длинные промежутки и как это исправить?

Идеальная картинка

Текущий контроллер

Ячейка раскадровки (ширина этикетки установлена ​​на 150)

class HobbiesViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate{

    @IBOutlet weak var collectionView: UICollectionView!

    var items = ["karateeeeeeeeeee", "signup", "last", "madur", "open", "somelongword", "nice", "looooooooong", "karate", "karate","karate", "signup", "last", "madur"]

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return self.items.count
    }

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "hobbyCell", for: indexPath) as! HobbiesViewCell

        cell.label.text = self.items[indexPath.item]
        cell.backgroundColor=UIColor.blue //try with different values untill u get the rounded corners
        cell.layer.cornerRadius = cell.bounds.size.height / 2
        cell.layer.masksToBounds=true

        return cell
    }
}

extension HobbiesViewController: UICollectionViewDelegateFlowLayout {
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "hobbyCell", for: indexPath) as! HobbiesViewCell
        cell.label.text = items[indexPath.row]
        cell.label.sizeToFit()
        return CGSize(width: cell.label.frame.width + 10 , height: 70)
    }
}

1 Ответ

0 голосов
/ 08 июня 2019

Ответ 1. При настройке ширины ячейки представления коллекции необходимо иметь минимальную ширину для ячейки, чтобы ячейка не стала настолько маленькой, чтобы она выглядела как круг.Ваш текущий рост равен 70, поэтому вы должны соблюдать условие, что если cell.label.frame.width + 10 меньше 160, то размер ячейки должен быть равен 160.

Ответ 2. Сам сборный вид управляет расстоянием между ячейками.в соответствии с рамкой, предоставленной для просмотра коллекции, и размером для ячейки.Чтобы установить интервал вправо, может быть ниже ссылка будет полезной для вас.

Интервал между ячейками в UICollectionView

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

Надеюсь, это вам как-то поможет.

...