【发布时间】:2014-02-19 05:18:53
【问题描述】:
我正在继承 NSTextView 并使用以下代码来计算内在内容大小,以便文本视图的高度随着它在我的自动布局约束中的内容而增长。
- (CGSize)intrinsicContentSize
{
return [[self layoutManager] usedRectForTextContainer:[self textContainer]].size;
}
除了在初始调用中返回 (0,0) 的大小外,此方法有效。
如果我在创建文本视图后在我的视图中调用 [self setNeedsLayout:YES] 并使 -layout 中的文本视图的内容大小无效,它将为新的空文本视图返回正确的大小。
有没有办法让-intrinsicContentSize 在不更新视图布局的情况下为我的新文本视图返回正确的大小?
【问题讨论】:
-
致电
invalidateIntrinsicContentSize? -
顺便说一句,让文本视图随内容一起增长的常用方法是查看它的
contentSize,它会自动为您维护...... -
@matt 这就是我在 -layout 中所做的工作,但我不明白为什么我必须第一次在 -layout 中这样做。当文本更改时,我使内容大小无效,效果很好。
-
@matt NSTextView 没有 contentSize 属性,除非我遗漏了什么。
-
是的,因为我已经习惯了iOS,所以我自然而然地想到了UITextView。请忽略我所说的一切(除非为了以后能开怀大笑)。
标签: cocoa autolayout nstextview