如何从高度确定文本的字体大小,以swift?;

如何从高度确定文本的字体大小,以swift?;,swift,Swift,我需要在图像中添加一个文本水印。 文本的高度随图像的高度而变化。 现在我知道了图像的高度,也知道了文本的高度。 我如何知道文本的字体大小? 简而言之,如何从高度确定文本的字体大小 现在我的解决方案如下。有人有更好的方法吗? 谢谢 //-参数高度:字体的目标高度 func textFontSize(从高度:CGFloat)->CGFloat{ 变量fontSize:CGFloat=30 var textFont=UIFont.systemFont(ofSize:fontSize) while(te

我需要在图像中添加一个文本水印。 文本的高度随图像的高度而变化。 现在我知道了图像的高度,也知道了文本的高度。 我如何知道文本的字体大小? 简而言之,如何从高度确定文本的字体大小 现在我的解决方案如下。有人有更好的方法吗? 谢谢

//-参数高度:字体的目标高度
func textFontSize(从高度:CGFloat)->CGFloat{
变量fontSize:CGFloat=30
var textFont=UIFont.systemFont(ofSize:fontSize)
while(textFont.lineHeight<(高度*4/5)||
textFont.lineHeight>height){
//减小字体大小
如果textFont.lineHeight>height{
fontSize=fontSize-0.5
//增加
}否则,如果textFont.lineHeight<(高度*4/5){
fontSize=fontSize+0.5
}
textFont=UIFont.systemFont(ofSize:fontSize)
}
返回字体大小
}

正确的方法已经过测试

//-参数高度:字体的目标高度
func textFontSize(从高度:CGFloat)->CGFloat{
让defaultSize:CGFloat=30
让defaultFont=UIFont.systemFont(ofSize:defaultSize)
让boundSize=self.size(带属性:[NSAttributedString.Key.font:defaultFont])
设pointsperpix=defaultFont.pointSize/boundSize.height
设desiredPointSize=高度*点像素
返回所需的点大小
}

您当前的解决方案有什么问题?@JoakimDanielson我希望字体大小能更准确,这样高度就可以更准确,效率就有点低,所以我想找到一种更好的方法选择默认字体大小,您可以试着在文本高度和图像高度之间使用比例。例如,我们将8作为默认字体大小。让我们把图像的高度设为100,文本的高度设为20。比例为20/100=0.2,您可以将基本字体大小乘以此系数*10->
newFontSize=baseFontSize*比例*10
。使用上一个示例,您将拥有->
newFontSize=8*0,2*10=16
。很明显,如果这太多或太少,您可以调整比率。@Andrew21111感谢您的帮助answer@Andrew21111谢谢我根据你的建议找到了解决办法。