将应用程序从Swift 2移植到Swift 5时,滚动条消失了

时间:2019-06-26 08:48:10

标签: swift xcode macos cocoa nsscrollview

我正在将MacOS应用程序从Swift 2转换为Swift5。我可以运行该应用程序,但是滚动条不再可见(或更新)。应当存在滚动条的区域,该区域似乎是为滚动条保留的,但没有滚动条本身。

如何更新documentView的框架?

在旧版本中,通过将新的框架大小分配给documentView.frame属性来直接更新文档的框架。这也会更新滚动条(至少我相信如此)

我检查了滚动视图的设置是否正确,即contentView的设置是否正确。 showScroller布尔已设置。 documentView的大小已正确更新。

DocumentView是NSView的子类,使用IB中的Edit命令将其嵌入到NSScrollView中。滚动条是通过此过程添加的。

文档视图的大小在draw:rect函数中设置。

我对如何进行不知所措,欢迎任何提示。

编辑:我创建了一个包含以下代码的示例:

class DocControl: NSViewController {

@IBOutlet weak var scrollview: NSScrollView!

    override func viewDidLoad() {
        print("viewDidLoad")
        var newFrame = scrollview.documentView!.frame
        print("old width = \(newFrame.size.width)")
        newFrame.size.width = 1000
        newFrame.size.height = 1000
        scrollview.documentView!.frame = newFrame
        print("new width = \(newFrame.size.width)")
    }
}

当然,它是用IB接线的。它生成以下输出:

viewDidLoad
old width = 438.0
new width = 1000.0

但没有滚动条出现(在本示例中,我将autohidescrollbar设置为'true')

0 个答案:

没有答案