2014-09-23 5 views
0

Как self.frame и self.contentView.frame в:UITableViewCell Подкласс не сообщает фактическую высоту

override init(style: UITableViewCellStyle, reuseIdentifier: String) { 
    super.init(style: style, reuseIdentifier: reuseIdentifier) 
    // Initialization code here   
} 

.. подкласс UITableViewCell содержит 44px в высоту, когда он показан как 200й в тренажере и устройстве?

Update:

Для детального объяснения того, почему это происходит в iOS8: https://stackoverflow.com/a/25884832/1178924

+0

Используете ли вы один и тот же идентификатор повторного использования ячеек, как определено в IB, для извлечения его фрейма? – Razvan

ответ

2

несколько вещей:.

Предположительно вы устанавливаете делегат Tableview к классу, который вы реализуете heightForRowAtIndexPath в

Если ваш UITableView определен внутри файла конструктора интерфейса, убедитесь, что вы установили значение «высота строки» в «Инспекторе размеров» на высоту вашей ячейки (200).

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

+0

Да, его не обновлено в init и layoutSubviews дает правильный фрейм. Спасибо! –

+0

Удивительный, рад, что помог! –

1

44px по высоте по умолчанию ячейки таблицы IOS». Если вы хотите, чтобы указать высоту для пользовательского Tableview клетки вы должны переопределить tableView.heightForRowAtIndexPath

+0

Извините, я уже сделал это, или это не будет 200x в симуляторе, как упомянуто выше. Проблема в том, что все, что я возвращаю в tableView.heightForRowAtIndexPath, не отражается в подклассе UITableViewCell init. –

Смежные вопросы