抖音表情包怎么保存到相册-

步骤如下:

第一步、打开抖音任意视频评论。

第二步、点开表情包选择需要的表情包放到输入栏里。

第三步、长按该表情包后会弹出选项,点击存入相机胶卷。

第四步、打开微信任意聊天窗口。

第五步、点开表情包里的收藏表情包。

第六步、然后点击添加单个表情。

第七步、进入手机相册,选择刚刚在抖音保存的表情包。

第八步、这样就收藏到表情包里了。

iOS实现图文混排的两个方法

如果你想自定义文本的布局,例如像QQ、微信这样的应用中使用表情,那你多半会用到CoreText,CoreText是iOS、OSX平台的文本处理低层的框架, 可以实现任意的文字编排,更多详细信息请戳官方文档,一般来说, 我们们用下面的代码来实现图文混排:

text = [[NSMutableAttributedString alloc] initWithString:@""];

NSAttributedString *txt1 = [[NSAttributedString alloc] initWithString:@"测试"];

[text appendAttributedString:txt1];

[txt1 release];

CTRunDelegateCallbacks callback;

callback.version = kCTRunDelegateVersion1; //必须指定,否则不会生效,没有回调产生。

callback.dealloc = deallocCallback;

callback.getAscent = getAscent;

callback.getDescent = getDescent;

callback.getWidth = getWidth;

NSDictionary *imgAttr = [[NSDictionary dictionaryWithObjectsAndKeys:@100, @"width", nil] retain];

CTRunDelegateRef delegate = CTRunDelegateCreate(&callback, imgAttr);

NSDictionary *txtDelegate = [NSDictionary dictionaryWithObjectsAndKeys:(id)delegate, (NSString*)kCTRunDelegateAttributeName, @100, @"width", nil];

NSAttributedString *imgField = [[[NSAttributedString alloc] initWithString:@" " attributes:txtDelegate] autorelease];

[text appendAttributedString:imgField];

[text appendAttributedString:[[[NSAttributedString alloc] initWithString: @"结束"] autorelease]];

CGMutablePathRef pathRef = CGPathCreateMutable();

CGPathAddRect(pathRef, NULL, CGRectMake(0, 0, self.frame.size.width, self.frame.size.height));

framesetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)text);

ctFrame = CTFramesetterCreateFrame(framesetter, CFRangeMake(0, 0), pathRef, NULL);

CFArrayRef lines = CTFrameGetLines(ctFrame);

CGPoint origins[CFArrayGetCount(lines)];

CTFrameGetLineOrigins(ctFrame, CFRangeMake(0, 0), origins);

for (int i = 0; i < CFArrayGetCount(lines); i++) {

CTLineRef line = CFArrayGetValueAtIndex(lines, i);

CFArrayRef runs = CTLineGetGlyphRuns(line);

for (int j = 0; j < CFArrayGetCount(runs); j++) {

CTRunRef run = CFArrayGetValueAtIndex(runs, j);

CGPoint lineOrigin = origins[i];

NSDictionary *meta = (NSDictionary*)CTRunGetAttributes(run);

if (meta && ([meta valueForKey:@"width"] != nil)) {

imageLocation.y = lineOrigin.y;

CGFloat offset = CTLineGetOffsetForStringIndex(line, CTRunGetStringRange(run).location, NULL);

imageLocation.x = lineOrigin.x + offset + self.frame.origin.x;

}

}

}

CFRelease(pathRef);

[self setNeedsDisplay];

一直以来,我认为只有这种方法实现。好吧,其实我没有想过有没有其它实现方法的问题。直到有一天看类似效果的代码时惊奇的发现:怎么 没有CTRunDelegate? 于是就仔细想了一下这个问题,创建CTFrame的时候会指定一个path,通常这个path我会使用一个CGRect完事,然后在 有的地方使用CTRunDelegate处理一下,但其实完全可以使用CGMutablePath来画出一块不规则的文本路径,比如:这样,就可以在预定的位置画了,而不用会CTRunDelegate来特殊处理,这种方式比较适合位置固定的应用。

转自madongsheng

本文来自作者[从梦]投稿,不代表泰博号立场,如若转载,请注明出处:https://www.staplesadv.cn/ds/183.html

(17)
从梦的头像从梦签约作者

文章推荐

发表回复

作者才能评论

评论列表(3条)

  • 从梦的头像
    从梦 2025年07月30日

    我是泰博号的签约作者“从梦”

  • 从梦
    从梦 2025年07月30日

    本文概览:步骤如下:第一步、打开抖音任意视频评论。第二步、点开表情包选择需要的表情包放到输入栏里。第三步、长按该表情包后会弹出选项,点击存入相机胶卷。第四步、打开微信任意聊天窗口。第五步...

  • 从梦
    用户073001 2025年07月30日

    文章不错《抖音表情包怎么保存到相册-》内容很有帮助

联系我们

邮件:泰博号@gmail.com

工作时间:周一至周五,9:30-17:30,节假日休息

关注微信