Сбой iOS 14 при настройке режима разрыва строки метки, выравнивания текста и цвета текста

#ios #objective-c #react-native

#iOS #objective-c #react-native

Вопрос:

Я использую React Native SVG для проекта, и с обновлением до iOS 14 я начал получать сбой в окне с изменяемым размером. Я отследил сбой до трех назначений в библиотеке, но не уверен, почему они вызывают a EXEC_BAD_INSTRUCTION или a EXC_BAD_ACCESS .

Этот сбой происходит только после первоначального рендеринга в приложении при изменении размера поля. Первый рендеринг проходит нормально, а затем последующее перемещение элемента вызывает ошибку. Этот код работал в iOS 13, но не в iOS 14.

Я создал воспроизводимый пример здесь. Я также создал проблему в репозитории здесь.

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

Ниже я получаю ошибку:

 label.attributedText = (__bridge NSAttributedString * _Nullable)(attrString);
label.baselineAdjustment = UIBaselineAdjustmentNone;
//label.lineBreakMode = NSLineBreakByWordWrapping;
label.backgroundColor = UIColor.clearColor;
//label.textAlignment = NSTextAlignmentRight;
label.numberOfLines = 0;
label.opaque = NO;
label.font = font;
//label.textColor = [UIColor colorWithCGColor:color];
  

Это из строки 203 в RNSVGTSpan, комментарии — это строки, которые я удалил, чтобы заставить его работать, но это лишает используемой функциональности.

Я в недоумении, почему это будет работать при первоначальном рендеринге, но не при последующих изменениях в iOS 14, но работает безупречно в iOS 13.

Комментарии:

1. На какой строке вы получаете сбой?

2. Сбой, например, 203 в RNSVGTSpan, я изучил дальше в последнее время и обнаружил, что изменение attributedText на текст и предоставление строки напрямую также устраняет мой сбой. Я смотрю, получает ли AttributedString неправильное значение каким-либо образом. Кроме того, RNSVGTSpan взят из React Native SVG и не является тем, что я написал, но пытаюсь исправить.

3. Итак, это первая строка приведенного выше фрагмента кода. Вы проверили attrString , действительно ли это? Это может привести к сбою, если это не так.

4. Я еще не подтвердил, что это действительно, но в настоящее время я изучаю, действительно ли это attrString или нет. Я также рассматриваю возможность просто заменить его, text поскольку в нем задаются те же значения, что и в послесловиях attrString , которые по большей части находятся в .