Ram*_*tra 3 macos cocoa nstextview swift swift5
我正在制作一个应用程序,用户可以单击窗口上的任意位置,并NSTextView以编程方式在鼠标位置添加 a 。我已经让它与下面的代码一起工作,但我希望它NSTextView水平扩展,直到到达屏幕边缘,然后垂直增长。它目前具有固定宽度,当我添加更多字符时,文本视图垂直增长(如预期),但我也希望它水平增长。我怎样才能实现这个目标?
我已经尝试将isHorizontallyResizable和设置isVerticallyResizable为 true 但这不起作用。经过一段时间的研究,我发现了这个https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/TextStorageLayer/Tasks/TrackingSize.html但这对我来说也不起作用。
my 中的代码ViewController将其添加NSTextView到其视图中:
private func addText(at point: NSPoint) {
let textView = MyTextView(frame: NSRect(origin: point, size: CGSize(width: 150.0, height: 40.0)))
view.addSubview(textView)
}
Run Code Online (Sandbox Code Playgroud)
并且,MyTextView类如下所示:
class MyTextView: NSTextView {
override func viewWillDraw() {
isHorizontallyResizable = true
isVerticallyResizable = true
isRichText = false
}
}
Run Code Online (Sandbox Code Playgroud)
我也看到了这个答案/sf/answers/3795970321/,但我不完全确定如何实现它。我已添加此代码片段MyTextView并使用它,如下所示:
override func didChangeText() {
frame.size = contentSize
}
Run Code Online (Sandbox Code Playgroud)
但是,我认为我使用它是错误的。因此,任何帮助将不胜感激。
我有点困惑,因为你要添加NSTextView到 aNSView的一部分NSViewController,然后你正在谈论屏幕宽度。这是您的Presentify - Screen Annotation应用程序的一部分吗?如果是,则您有一个全屏覆盖窗口,您可以从中获取大小(或从视图控制器的视图)。
view.bounds.size // view controller's view size
view.window?.frame.size // window size
Run Code Online (Sandbox Code Playgroud)
如果没有,并且您确实需要知道屏幕尺寸,请检查NSWindow& NSScreen。
view.window?.screen?.frame.size // screen size
Run Code Online (Sandbox Code Playgroud)
没有指定任何窗口/视图控制器的视图调整大小行为。
view.window?.screen?.frame.size // screen size
Run Code Online (Sandbox Code Playgroud)