当TextKit的NSTextContainer的大小发生变化时,如何收到通知?

时间:2016-03-21 22:16:31

标签: textkit

我需要知道TextKit NSTextContainer size何时发生变化,因此我可以更新NSLayoutManager中的一些缓存。如何在size更改时收到通知? TextKit一般(和NSTextContainer' s size属性)是否支持KVO?我查看了NSTextContainer.h标题和NSTextContainer documetation,但无论如何我都找不到任何相关信息。

1 个答案:

答案 0 :(得分:1)

NSTextContainerNSLayoutManager的大小或形状发生变化时,应该在heightTracksTextView上调用-[NSLayoutManager textContainerChangedGeometry:]

  

此方法由文本的其他组件自动调用   系统;你很少需要直接调用它。的子类   但是,NSTextContainer必须在其大小的任何时候调用此方法   形状变化(动态调整其形状的文本容器)   例如,在放置图形时包装文本时必须这样做   添加,移动或删除图形。

我尚未对此进行测试,以确定是否需要在widthTracksTextView上设置NSTextContainerverticallyResizable;在horizontallyResizable上设置NSLayoutManager-[NSTextContainer setSize:];或者以编程方式呼叫-[NSTextContainer setSimpleRectangularTextContainer:]-[NSLayoutManager textContainerChangedGeometry:]会自动拨打.tinted-image { background: /* top, transparent red, faked with gradient */ linear-gradient(rgba(255, 0, 0, 0.45), rgba(255, 0, 0, 0.45)), /* bottom, image */ url(http://cdn.sstatic.net/stackoverflow/company/img/logos/so/so-icon.png?v=c78bd457575a); width: 75px; height: 75px; }广告。