Как установить вертикальную длину xib как код в Swift

Я хотел бы гибко изменить высоту представления в Xib Size Inspector в коде.

Я также хочу изменить значения высоты, равные ограничениям, в UICollectionView в Xib.

Короткий номер :

class ShopImagesViewCell: UITableViewCell
{
    @IBOutlet weak var imageCollectionView: UICollectionView!

    override func awakeFromNib()
    {
        super.awakeFromNib()
        // ......
    }
}

extension ShopImagesViewCell
{
    func setView(urls : [String], isZzip : Bool)
    {
        self.imageCollectionView.delegate = self
        self.imageCollectionView.dataSource = self
        self.imageCollectionView.regCells(cells: 
        ["ShopImageCollectionViewCell","ShopNonImageCollectionViewCell"])
        // ......
    }
}

extension ShopImagesViewCell : UICollectionViewDelegateFlowLayout, UITableViewDelegate
{
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat
    {
        return CGFloat(291) // It does not work.
    }
}

Когда Xib загружается впервые, он выполняется только один раз, чтобы соответствовать размеру.

Изменение длины высоты Xib в коде и изменение высоты, равной ограничениям, в UICollectionView в коде.

Скажите, пожалуйста, где я должен использовать код.


person Enkha    schedule 07.11.2018    source источник
comment
Где код регулировки высоты? Кроме того, если вы используете автоматическую компоновку, лучше не настраивать рамку.   -  person Skywalker    schedule 07.11.2018
comment
где ваш код для установки tableview.delegate ?   -  person Ratul Sharker    schedule 07.11.2018


Ответы (1)


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

Если UITableViewDelegate реализовано или вы намеревались реализовать, добавьте этот метод делегата

 func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    // you have the indexPath based on which you can set the height dynamically, based on the cell position.
    // return your intended height here
}

Надеюсь, поможет.

person Ratul Sharker    schedule 07.11.2018
comment
extension ShopImagesViewCell: UITableViewDelegate Я вставляю и запускаю код, но он не работает. - person Enkha; 07.11.2018
comment
Вы установили tableview.delegate в свой объект класса shopImagesViewCell? - person Ratul Sharker; 07.11.2018
comment
звонят ли вашему делегату tableView heightForRowAtIndexPath - person Ratul Sharker; 07.11.2018
comment
в вашем обновленном вопросе, где находится код, который устанавливает tableView.delegate? - person Ratul Sharker; 07.11.2018
comment
Я не могу запустить свой код, но я думаю, что это хороший ответ. Я приму и опубликую новые вопросы. - person Enkha; 07.11.2018