Я думаю, вы можете использовать renderToString
для этого случая
import { renderToString } from 'react-dom/server'
...
const template = `<h1>Title<h1>
<p>This is some content.</p>
[Tag]Other content[/Tag]
<p>More random content.</p>`
const html = template.replace(/\[Tag\].+\[\/Tag\]/, renderToString(<Tag content={content} />))
Вы не должны переноситься CGColorRef
с при установке toValue
или fromValue
свойства CABasicAnimation
. Просто используйте CGColorRef
. Для предотвращения предупреждения компилятора можно бросить CGColorRef
к id
.
В моем демонстрационном приложении, следующий код анимировал предпосылки к красному.
CABasicAnimation* selectionAnimation = [CABasicAnimation
animationWithKeyPath:@"backgroundColor"];
selectionAnimation.toValue = (id)[UIColor redColor].CGColor;
[self.view.layer addAnimation:selectionAnimation
forKey:@"selectionAnimation"];
Однако, когда анимация закончена, фон возвращается к исходному цвету. Это вызвано тем, что CABasicAnimation
только производит уровень представления целевого слоя, в то время как анимация работает. После концов анимации, набора значений в образцовых возвратах слоя. Таким образом, Вы оказываетесь перед необходимостью устанавливать слои backgroundColor
свойство к красному также. Возможно, выключите неявные анимации с помощью CATransaction
.
Вы могли сохранить себя эта проблема при помощи неявной анимации во-первых.
Я боролся с этой проблемой, пока экспериментально не нашел препятствие. Установка свойства backgroundColor слоя, напрямую или через анимацию, не будет иметь никакого эффекта, если вы измените цвет фона по умолчанию (или не указан) в Interface Builder, в контексте, конечно, элемента (такого как UILabel), который размещен в ИБ. Так что оставьте цвет фона неопределенным, и вышеуказанное должно работать.