contentsize and contentOffset equivalent in NSScroll view
I am porting an app from Ipad to mac. (I know that it s开发者_如何转开发ounds weird)
I stuck with NSScrollview. Please guide me contentsize , contentOffset equivalent in NSScrollview.
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 AppKit
extension 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.
精彩评论