Closed smithereensarr closed 8 years ago
@wangweiarr
MLExpressionManager.m
里的kExpressionLineHeightMultiple
调整为0.8f
的话大概和emoji的差不多大。
而说到渲染效果的话就很尴尬了,库里的微信表情并不是矢量图,而emoji是矢量图,所以放大之后肯定会模糊。
非常感谢,然而我只是想知道emoji尺寸的规律。比如您的“ kExpressionLineHeightMultiple”参数值设置为0.8时 10point的字体表情会比emoji小,而50point字体时表情会比emoji大,所以……
@wangweiarr 无非就是根据表情字符的当前字体的lineHeight,来进行等比例缩放。 然后具体喜欢怎么调整,你自己可以尝试下。 至于你说的比如,我也不知道它比较细节的规律是什么,但是真心觉得没必要关心这个事。 非要一模一样的话,帮不了你了。Sorry...
//重写以返回附件的大小
- (CGRect)attachmentBoundsForTextContainer:(NSTextContainer *)textContainer proposedLineFragment:(CGRect)lineFrag glyphPosition:(CGPoint)position characterIndex:(NSUInteger)charIndex
{
if (self.imageBlock)
{
CGFloat width = self.width;
CGFloat height = self.height;
// 找到其是否有设置字体,如果有,就根据字体的descender调整下位置,以及lineHeight调整大小
UIFont *font = [textContainer.layoutManager.textStorage attribute:NSFontAttributeName
atIndex:charIndex
effectiveRange:nil];
CGFloat baseLineHeight = (font?font.lineHeight:lineFrag.size.height);
if (self.lineHeightMultiple>0) {
width = height = baseLineHeight*self.lineHeightMultiple;
if (self.imageAspectRatio>0) {
width = height*self.imageAspectRatio;
}
}else{
if (width==0&&height==0) {
width = height = lineFrag.size.height;
}else if (width==0&&height!=0) {
width = height;
}else if (height==0&&width!=0) {
height = width;
}
}
CGFloat y = font.descender;
y -= (height-baseLineHeight)/2;
return CGRectMake(0, y, width, height);
}
return [super attachmentBoundsForTextContainer:textContainer proposedLineFragment:lineFrag glyphPosition:position characterIndex:charIndex];
}
感谢,其实我就是想问楼主有没有办法了解,或者已知emoji和文字大小规律,现在看来确实没法知道,只能自己针对特别的字号自己调整才能达到目的。也许就像楼主说的,这个真没什么必要,是强迫症吧了😅。。
@wangweiarr :) 有其他问题再交流。
就用中文说好了😅,你这个demo如果用很大的字体,表情也会显得特别大,不如emoji随着字体大小的变化而变化的自然。我摸索了半天,始终找不到emoji的location和size与font的关系,好像完全没规律似的!所以想请教一下你有什么好的办法,能让第三方表情缩放到跟emoji一模一样,达到跟emoji完全一致的渲染效果。Well As far as I am concerned, it is impossible.