具有非规则形状的 NSTextContainer 示例?

2024-04-23

嗨,我正在使用新的TextKitiOS7 的 API,我正在尝试制作一个UITextView具有不规则形状。到目前为止,我在视图控制器中有:

-(void) loadView
{
    self.view = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,548)];

    NSTextStorage *textStorage = [[NSTextStorage alloc] init];

    NSLayoutManager *layoutManager = [[NSLayoutManager alloc] init];
    [textStorage addLayoutManager: layoutManager];

    BaseTextContainer *textContainer = [[BaseTextContainer alloc] initWithSize:CGSizeMake(100, 100)];
    [layoutManager addTextContainer: textContainer];

    BaseTextView *textView = [[BaseTextView alloc] initWithFrame:CGRectMake(110,124, 100, 100) textContainer:textContainer];
    textView.backgroundColor = [UIColor blueColor];
    textView.editable = YES;
    [self.view addSubview:textView];
}

然后在我的子类中NSTextContainer,我想要一个mutablePath绘制为文本容器的形状,但不确定如何实现这一点。我有:

- (BOOL) isSimpleRectangularTextContainer
{
    return NO;
}

- (void) drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx
{
    NSLog(@"TEST");
    CGContextRef context = ctx;
    CGSize layerSize = layer.frame.size;

    CGAffineTransform transform = CGAffineTransformMakeScale(layerSize.width / self.initialSize.width, layerSize.height / self.initialSize.height);
    CGMutablePathRef newGraphicMutablePath = CGPathCreateMutableCopyByTransformingPath(self.mutablePath, &transform);
    CGContextAddPath(context, newGraphicMutablePath);

    CGPathRelease(newGraphicMutablePath);
    CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor);
    CGContextDrawPath(context, kCGPathFill);
}

只是对如何让它发挥作用有点困惑。我找不到任何地方的例子NSTextContainer具有不规则形状。


不需要构建 Text Kit 堆栈的所有代码,因为您不需要修改堆栈的体系结构。从普通的 UITextView 开始 - 假设它是self.textView- 然后将一个或多个 UIBezierPath 对象分配给其排除路径:

self.tv.textContainer.exclusionPaths = myArrayOfBezierPaths;

这些路径是排除路径,因此对于椭圆形,您需要创建四个路径,每个路径描述文本容器的一个角。

或者,您可以自己构建文本工具包堆栈,以便插入您自己的文本容器子类,并通过覆盖来修改允许文本移动的位置lineFragmentForProposedRect:,也许类似于我在这里所做的:https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch10p537exclusionPath2/ch23p813textKitShapes/MyTextContainer.swift https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch10p537exclusionPath2/ch23p813textKitShapes/MyTextContainer.swift

一些实验:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有非规则形状的 NSTextContainer 示例? 的相关文章

随机推荐

  • 与基于类的方法相比,使用 Hooks 设置状态后重新渲染有什么区别?

    类组件 在 React 类组件中 我们被告知setState always导致重新渲染 无论状态是否实际更改为新值 实际上 一个组件will当状态更新到时重新渲染same以前的价值 文档 setState API 参考 https reac
  • ViewPager内部的TextView拦截触摸事件

    我有一个ViewPager包含两个片段 在任何片段中我都可以触摸一个地方 滑动即可切换到另一个地方fragment 其中一个片段包含一个列表 列表中的项目包含一项TextView和一个ImageView 问题是 如果您是从点击开始拖动的Im
  • 未定义的索引:php 脚本中的错误

    在 php 页面中我有以下代码 if REQUEST c I get error on this line itself Why pidis int REQUEST c 我不断收到未定义索引错误 在谷歌搜索上 我设法理解 如果我们尝试访问的
  • Visual Studio 设置以在运行时删除对 dll 文件的依赖

    到处都有人建议当 Visual Studio 在运行时找不到 DLL 时如何让 Visual Studio 知道 但我想知道在哪里删除该选项 以便 Visual Studio 在运行时不会尝试查找 dll 文件 我昨天也有类似的问题 但没有
  • Spring XML 406错误

    我正在尝试使用 Java 制作 RESTful 服务 使用多个教程和许多 StackOverflow 条目 不幸的是 我似乎无法让我的代码工作 当我尝试到达端点时 我一直收到 Http 406 任何帮助表示赞赏 GreetingContro
  • 工厂中的依赖注入

    我对 DI 很陌生 但我真的很想尝试使用它 有件事我不明白 这是一个简单的工厂伪代码 我经常使用 class PageFactory public function construct dependency list save refere
  • CLLocationManagerDelegate 协议中的挂钩

    我已经 3 天遇到问题了 我想在 CLLocationManagerDelegate 协议中挂钩此方法 void locationManager CLLocationManager manager didUpdateLocations NS
  • 在 Corona sdk 上保存高分?

    我想保存游戏中创建的高分 并且当玩家点击高分按钮时可以在主菜单中看到 有人可以帮助我吗 您可以使用SQLITE https docs coronalabs com api library sqlite3 index html将高分保存到数据
  • 使用 Puppet 配置远程规则集

    我正在尝试使普罗米修斯自动化node exporter和我的普罗米修斯服务器 为了node exporter我已经编写了一个模块来安装所有需要的软件包 设置 ipaddress基于facter还有更多 现在我想确保收集到的信息 hostna
  • Haskell-Stack:构建期间出现访问冲突错误

    过去几天我一直在尝试使用堆栈构建我的 Haskell 项目 但遇到了访问冲突错误 据我了解 我有最新的堆栈版本和 GHC 这一切最初都是有效的 直到我将一个库添加到我的 cabal 文件中 我现在已经将其删除 但错误仍然出现 我也恢复到我的
  • Flutter ListView收缩包装——嵌套ListView

    我在 ListView 中有一个 ListView 内部 ListView 不知道它的高度应该是多少 所以我必须用例如 SizedBox 给它一个特定的高度 然而问题是 我实际上希望内部 ListView 收缩包装 这样它就不会滚动 占用父
  • iPhone如何将一个视图控制器的视图添加到另一个视图控制器的视图?

    这一直在我的脑海里 我真的不知道如何正确地将一个视图控制器管理的视图添加到另一个视图控制器的视图中 这不起作用 因为视图未完成加载 self messageViewController PopupMessagesViewController
  • 如何创建 3 列响应式布局?

    我有一个 3 列布局 当从桌面访问它时 它显示如下 columnleft columncenter columnright 我希望从手机 平板电脑 调整大小浏览器查看它时是这样的 columnleft columncenter column
  • python 2.6 cPickle.load 导致 EOFError

    我使用 cPickle 来腌制整数列表 使用 HIGHEST PROTOCOL cPickle dump l f HIGHEST PROTOCOL 当我尝试使用以下代码来取消它时 我收到 EOFError 我尝试在 unpickle 之前
  • CNN 模型分类错误:logits 和标签必须可广播:logits_size=[32,10] labels_size=[32,13]

    这里我尝试在图像分类上运行 CNN 模型 这是批量大小和 13 个标签 Image batch shape 32 32 32 3 Label batch shape 32 13 Watch Back Watch Chargers Watch
  • 计算聚类的 F 度量

    谁能帮我计算一下F measure的总和吗 我知道如何计算召回率和精度 但不知道对于给定的算法如何计算一个 F 测量值 举个例子 假设我的算法创建m集群 但我知道有n相同数据的聚类 由另一个基准算法创建 我找到了一份 pdf 但它没有用 因
  • pandas 数据框的元组列表列表

    我有这个数组 它是相似性计算的结果 它是一个像这样的元组列表 example a b c d a1 b1 c1 d2 在示例中 有 121044 个列表 每个列表有 30 个元组 我想要一个 pandas Dataframe 就像元组的第二
  • 在 Vuetify 组合框中通过 @change 传递目标元素

    我需要通过目标事件updateTags方法 这是下面的组合框 当我打电话给comboActive方法我可以获得目标事件 KeyboardEvent isTrusted true key y code KeyY location 0 ctrl
  • Chrome 中的 FileReader 内存泄漏

    我有一个具有文件上传功能的网页 上传以 5MB 块执行 我想在将每个块发送到服务器之前计算其哈希值 块表示为Blob https developer mozilla org en docs Web API Blob对象 为了计算哈希值 我将
  • 具有非规则形状的 NSTextContainer 示例?

    嗨 我正在使用新的TextKitiOS7 的 API 我正在尝试制作一个UITextView具有不规则形状 到目前为止 我在视图控制器中有 void loadView self view UIView alloc initWithFrame