我试图在NSTextView中设置一个属性字符串.我想根据其内容增加其高度,最初将其设置为某个默认值.
所以我试过这个方法:
我在NSTextView中设置内容.当我们在NSTextView中设置一些内容时,它的大小会自动增加.所以我将其超级视图的高度NSScrollView增加到它的高度,但是NSScrollView没有完全调整大小,它在右边显示了滚动条.
float xCoordinate = 15.0;
[xContentViewScroller setFrame:NSMakeRect(xCoordinate, 0.0, 560.0, 10.0)];
[[xContentView textStorage] setAttributedString:xContents];
float xContentViewScrollerHeight = [xfContentView frame].size.height + 2;
[xContentViewScroller setFrame:NSMakeRect(xCoordinate, 0.0, 560.0, xContentViewScrollerHeight)];
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议我一些方法或方法来解决这个问题.通过谷歌搜索,我发现在UITextView中有contentSize方法可以获得其内容的大小,我试图在NSTextView中找到类似的方法,但无法取得任何成功:(
Pet*_*sey 16
问文本视图其布局管理器和它的文本容器.然后,强制布局管理器执行布局,然后向布局管理器询问文本容器使用的矩形.
另请参见文本系统概述.
基于@Peter Hosey 的回答,这里是 Swift 4.2 中 NSTextView 的扩展:
extension NSTextView {
var contentSize: CGSize {
get {
guard let layoutManager = layoutManager, let textContainer = textContainer else {
print("textView no layoutManager or textContainer")
return .zero
}
layoutManager.ensureLayout(for: textContainer)
return layoutManager.usedRect(for: textContainer).size
}
}
}
Run Code Online (Sandbox Code Playgroud)
NSTextView *textView = [[NSTextView alloc] init];
textView.font = [NSFont systemFontOfSize:[NSFont systemFontSize]];
textView.string = @"Lorem ipsum";
[textView.layoutManager ensureLayoutForTextContainer:textView.textContainer];
textView.frame = [textView.layoutManager usedRectForTextContainer:textView.textContainer];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7455 次 |
| 最近记录: |