Get height of content in NSTableView

2019-03-31 00:49发布

问题:

Is there a way to get the height of the content in an NSTableView. In iOS, you can use the -contentSize method of UIScrollView. However, the -contentSize method of NSScrollView seems to just return the height of only the visible section of the NSScrollView, not including whatever is offscreen.

So, how can this be done on a Mac?

回答1:

- (NSSize)contentSize in Appkit returns the size of the NSClipView, and not the height of the content that scrolls inside the table view. I don't know how UIScrollViews work, but on OS X, an NSScrollView has a "content view" (more aptly named the NSClipView) that clips the actual content, which is provided by a document view (scrollable if it has a size larger than that of the clip view) that is a subview of the clip view.

As a side note, the NSScrollView scrolls by setting the document view's bounds origin (to the best of my knowledge).

It looks like what you want is the height of the document view, the height of the actual content. For that, try something like

scrollView.documentView.frame.size.height 


回答2:

You can get the real content height of NSTableView by

  • Objective-C version: tableView.intrinsicContentSize.height

  • Swift version: tableView.intrinsicContentSize.height