博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS.TextKit.02.文字图片混合排版
阅读量:5312 次
发布时间:2019-06-14

本文共 2201 字,大约阅读时间需要 7 分钟。

1、案例如图

2、代码

TextKit02ViewController.h
#import 
@interface TextKit02ViewController : UIViewController@property (nonatomic,strong) IBOutlet UITextView *textView;@property (nonatomic,weak) IBOutlet UIImageView *imageView;// 文本可以排版的区域@property (nonatomic,strong) NSTextContainer *textContainer;@end
TextKit02ViewController.m
#import "TextKit02ViewController.h"@interface TextKit02ViewController ()@end@implementation TextKit02ViewController- (void)viewDidLoad{    [super viewDidLoad];    CGRect textViewRect = CGRectInset(self.view.bounds, 10.0, 20.0);        // 1、创建储存文本对象textStorage    NSTextStorage *textStorage = [[NSTextStorage alloc] initWithString:self.textView.text];        // 2、创建文字排版对象layoutManager    NSLayoutManager *layoutManager = [[NSLayoutManager alloc] init];        // 3、创建文本排版的区域textContainer    self.textContainer = [[NSTextContainer alloc] initWithSize:textViewRect.size];        // 4、设置textStorage与layoutManager的关系    [textStorage addLayoutManager:layoutManager];        // 5、设置layoutManager与textContainer的关系    [layoutManager addTextContainer:self.textContainer];        // 6、重新构建原来控制器视图    [self.textView removeFromSuperview];    self.textView = [[UITextView alloc] initWithFrame:textViewRect textContainer:self.textContainer];    [self.view insertSubview:self.textView belowSubview:self.imageView];        // 7、设置textStorage中文本的风格    [textStorage beginEditing];        NSDictionary *attrsDic = @{NSTextEffectAttributeName:NSTextEffectLetterpressStyle};    NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:self.textView.text attributes:attrsDic];    [textStorage setAttributedString:attrStr];        [textStorage endEditing];        // 8、环绕路径    self.textView.textContainer.exclusionPaths = @[[self translatedBezierPath]];   }- (UIBezierPath *)translatedBezierPath{    CGRect imageRect = [self.textView convertRect:self.imageView.frame fromView:self.view];    UIBezierPath *newPath = [UIBezierPath bezierPathWithRect:imageRect];    return newPath;}- (void)didReceiveMemoryWarning{    [super didReceiveMemoryWarning];    // Dispose of any resources that can be recreated.}@end

 

 

转载于:https://www.cnblogs.com/cqchen/p/3776205.html

你可能感兴趣的文章
共轭先验 | 共轭分布(转)
查看>>
统计一下你写过多少代码
查看>>
【MySQL】经典数据库SQL语句编写练习题——SQL语句扫盲
查看>>
【DL】物体识别与定位
查看>>
【视觉】两个赞的开发文档
查看>>
每天学点java_Eclipse修改author名
查看>>
.Net程序员玩转Android系列之二~Android Framework概要(1)
查看>>
好用的工具集
查看>>
XP下配置ANT
查看>>
CentOS7 安装 oracleXE(快捷版)教程
查看>>
rabbitmq java queue
查看>>
阿里云安装tomcat
查看>>
【iCore1S 双核心板_ARM】例程十五:USB_HID实验——双向数据传输
查看>>
关于eclipse在线下载安装android SDK没反应解决方法
查看>>
Python之trutle库-五角星
查看>>
ie8下不解析background
查看>>
NYOJ - 矩形嵌套(经典dp)
查看>>
[Spark] - HashPartitioner & RangePartitioner 区别
查看>>
Vue2.0使用路由进行组件之间传值(三)
查看>>
大神的牛你造吗?
查看>>