contentsize and contentOffset equivalent in NSScroll view contentsize and contentOffset equivalent in NSScroll view ios ios

contentsize and contentOffset equivalent in NSScroll view


UIScrollView* uiScroll;uiScroll.contentSize;uiScroll.contentOffset;uiScroll.contentSize = CGSizeMake(w,h);uiScroll.contentOffset = CGPointMake(x,y);

=

NSScrollView* nsScroll;nsScroll.documentView.frame.size;nsScroll.documentVisibleRect.origin;nsScroll.documentView.frameSize = NSMakeSize(w,h);[nsScroll.documentView scrollPoint:NSMakePoint(x,y)];

Or perhaps even better:

import AppKitextension NSScrollView {    var documentSize: NSSize {        set { documentView?.setFrameSize(newValue) }        get { documentView?.frame.size ?? NSSize.zero }    }    var documentOffset: NSPoint {        set { documentView?.scroll(newValue) }        get { documentVisibleRect.origin }    }}

Notes: I used 'documentSize' (and 'documentOffset') because 'contentSize' conflicts with an already existing property of NSScrollView.


In addition to the lines from @aepryus, here are a couple more useful lines for getting/setting the scroll offset on macOS:

//Get the current scroll offset:_contentViewOffset = scrollView.contentView.bounds.origin;//Set the scroll offset from the retrieved point:NSPoint scrollPoint = [scrollView.contentView convertPoint:_contentViewOffset toView:scrollView.documentView];[scrollView.documentView scrollPoint:scrollPoint];


Everything you need to know about NSScrollView is laid out in the Scroll View Programming Guide for Cocoa provided in the documentation.

Although it doesn't appear that there's a direct equivalent, UIScrollView's contentSize can be likened to the size of NSScrollView's documentView, which is the scrollable content provided as an NSView to NSScrollView with setDocumentView:.

setContentOffset: can be compared to NSView's scrollPoint:, which uses an NSPoint to specify the offset of the documentView within the NSScrollView.

See the documentation for elaboration and code examples.