IOS 中英文本地化需要注意的细节

在IOS开发中,需要通常需要兼容英文和中文的开发,需要实现IOS的本地化


1、所以在IOS开发的时候,所有的字符串都需要用

NSLocalizedString(@"bTN_sure", nil)


2、在IOS本地化时候label和button的长度自适应

也就是在做之前,需要确认你这个字符串需要先行的能够显示的最大长度是多少,然后来确认。


CGSize size = [Contect sizeWithFont:currentLabelFont constrainedToSize:CGSizeMake(ScreenWidth-leftImage.size.width-30, 9999.0) lineBreakMode:NSLineBreakByWordWrapping];
            
 currentLabelFont = [UIFont systemFontOfSize:18.0];
 CGSize size2 = [@"1111" sizeWithFont:currentLabelFont constrainedToSize:CGSizeMake(200, 100) lineBreakMode:NSLineBreakByWordWrapping];


如下是转载:

 sizeWithFont:constrainedToSize:lineBreakMode:

Computing Metrics for a Single Line of Text
– sizeWithFont: 同下面,换行方式默认取NSLineBreakByWordWrapping

– sizeWithFont:forWidth:lineBreakMode: 将字符串放入指定宽度,如果不够,就依据换行方式截断字符串,返回其大小。
– sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode:将字符串放入限定宽度内,不足,就缩小字体,直至放下,返回此时的字符串大小和字体大小;缩小到最小还不能放下,就截断字符串,返回其大小和字体大小。设置高度没有什么意义,因为高度值再大也只能显示一行,再小也要显示一行。


Computing Metrics for Multiple Lines of Text
– sizeWithFont:constrainedToSize: 同下面,换行方式默认取NSLineBreakByWordWrapping

– sizeWithFont:constrainedToSize:lineBreakMode:用于多行,指定限制,换行方式,字体大小。限制大小的宽度值和换行方式影响换行,进而影响结果的高度值。限制大小的高度值会影响内容显示的多少,大于实际所需,没影响;小于的话,字符串只能显示一部分,直至只能显示一行.

注意:指定的限制只是一个评估值,例如在多行里,我设定宽度限制120,高度无限,换行方式NSLineBreakByWordWrapping,那么最终输出的宽度值是118。因为对于某个字体大小,它不会刚好填满你指定的宽度。此外,除了– sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode:会改变字体大小的情况外,字体大小指定时,无论换行方式如何,是多行还是单行,最终的高度都是和字体所需的高度成1倍或者n倍关系。



你可能感兴趣的:(IOS)