2015-09-23 3 views
0

У меня возникла следующая проблема. У меня есть пользовательский класс UITableViewCell с несколькими UIView внутри, которые действуют как контейнер для диаграмм. Проблема заключается в том, если я делаю следующее:UIView внутри пользовательского UITableViewCell неправильной ширины/высоты

self.upperLeftChart = XYPieChart(frame: CGRectMake(0, 0, self.upperLeftContainer.frame.width, self.upperLeftContainer.frame.height)) 
self.upperLeftContainer.addSubview(self.upperLeftChart) 

Chartview как большой, как и весь UITableViewCell вместо размера моего контейнера. Если я печатаю размер моего контейнера

NSLog("\(self.upperLeftContainer.frame.width)/\(self.upperLeftContainer.frame.height)") 

печатает: 320,0/568,0, что неправильно. Мой контейнер составляет около четверти всей ячейки.

Я предполагаю, что это связано с моими Autolayout + Constraints. Если я установил размер в 120x120px жестко закодированный, он будет хорошо работать.

Любой трюк, чтобы получить реальную ширину и высоту UIView, выполненную с автоопределением и ограничениями?

+0

Btw, что такое размер upperLeftContainer? – Beraliv

ответ

1

Что вам нужно сделать, это переопределить

override func layoutSubviews() { 
    super.layoutSubviews() 
    self.upperLeftCart.frame = CGRectMake(0, 0, self.upperLeftContainer.frame.width, self.upperLeftContainer.frame.height) 
} 

Таким образом, он будет менять кадр зрения каждый раз, когда клетка изменяет размер

+0

не совсем то же самое, вам нужно только один раз инициализировать представление и установить несколько кадров, layoutSubviews будет вызываться более одного раза –

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