Ошибка UIButton setCenter

77
6

У меня есть набор кнопок, которые я создаю. Тем не менее, код падает, когда я вызываю setCenter.

buttonsArray = [NSMutableArray new];
for (int i = 0; i < 7; i++) {
[buttonsArray addObject:[UIButton buttonWithType:UIButtonTypeCustom]];
UIButton *tempButton = [buttonsArray objectAtIndex:i];
[tempButton setFrameWidth:300.0 andHeight:50.0];
[tempButton addBlackBorderWidth:1.0];
[tempButton roundCornersBy:10.0];
[tempButton setBackgroundColor:[UIColor blackColor]];
[tempButton setColorToGradientFromColor:[UIColor grayColor] toColor:[UIColor blackColor]];
[tempButton setButtonTextColorForNormalState:[UIColor whiteColor] highlightedState:[UIColor redColor]];
[tempButton setCenter:CGPointMake([self screenUsableWidth] / 2.0, ([self screenUsableHeight] - 2.0 * MAIN_MENU_BUTTON_TO_SIDE_DISTANCE) * i / ([buttonsArray count] - 1) + MAIN_MENU_BUTTON_TO_SIDE_DISTANCE)]; //crash is here
}

Ошибка *** Terminating app due to uncaught exception 'CALayerInvalidGeometry', reason: 'CALayer position contains NaN: [384 nan]'

спросил(а) 2021-01-25T18:41:02+03:00 4 месяца, 4 недели назад
1
Решение
64

Часть вычисления координаты y должна делиться на ([buttonsArray count] - 1).

В первый раз в цикле это равно 0. Деление на 0 обычно считается плохим.

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

ответил(а) 2021-01-25T18:41:02+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема