#ios #uitableview #calayer
#iOS #uitableview #calayer
Вопрос:
У меня есть TableView с пользовательскими ячейками. каждая из ячеек имеет UIView внутри и UILabel.
Данные для первых двух ячеек в порядке — при прокрутке третьей приложение вылетает с ошибкой :
Terminating app due to uncaught exception 'CALayerInvalidGeometry', reason: 'CALayer bounds contains NaN: [0 0; 49.0686 nan]'
Код, в котором это происходит, таков :
BarView *bar = [[BarView alloc] initWithFrame:CGRectMake((barFullWidth - barWidth)/2 _index*(barFullWidth), plotView.height - roundf([[barInfo objectForKey:@"value"] floatValue]*barHeightRatio), barWidth, roundf([[barInfo objectForKey:@"value"] floatValue]*barHeightRatio))];
который вызывает это :
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
На что мне следует обратить внимание? Я даже не могу понять, что означает эта ошибка.
Панель — это UIView внутри ячейки. Сама панель создана и видна, даже несмотря на сбой приложения.
Комментарии:
1. Ваш вид панели — это ячейка? Или это вид панели внутри ячейки? Может быть, немного больше кода для контекста?
2. @AfonsoTsukamoto панель — это вид внутри ячейки.
3. Просто для проверки работоспособности попробуйте сначала создать CGRect, nslog его, а затем вызвать init с frame. Что-то устанавливает границы слоя этого вида равными нулю, и ваше переопределение init кажется правильным (просто отсутствует возвращаемое значение self;)
4. В строке, в которой происходит сбой, я вижу, что: {{0, nan}, {49.06863, nan}} это означает, что по y и высота равны nan по какой-то причине.
5. Точно. Эти значения взяты из NSLog? Или из стека исключения?