原Label大概是一个初始宽高都为0,也就是自适应的Label,锚点为{0.5,0.5},我现在要把里面的文本换成一段更长的文本,但是又得适配原先的Label格式,不能超出原先的框。
我想的办法是用估算的方法算出原来的Label大小,然后使用setDimensions去限制宽高,在这个限制里面去进行字号缩小和换行,但遇到了更大的麻烦。变长、变小、换行后的文本位置和原先的Label对不上,打个比方就是原先的Label可能在背景图的中央,现在生成后的Label在原先的Label下面的位置,我找了很久都没找到这道理是什么问题,有大佬能指点一下吗?
若只是单行文本可直接使用缩放
void updateLabelContent(Label* pLabel, const std::string& newText, float fLimitWidth) {
if (pLabel == nullptr)
return;
pLabel->setString(newText);
pLabel->updateContent();
auto& size = pLabel->getContentSize();
if (fLimitWidth< size.width) {
pLabel->setScale(fLimitWidth/ size.width);
}
}
好像是Vertical Alignment Top的原因
不是有overflo排版模式可以选择吗