iosiphonemacosuiscrollviewnsscrollview

contentsize and contentOffset equivalent in NSScroll view


I am porting an app from Ipad to mac. (I know that it sounds weird)

I stuck with NSScrollview. Please guide me contentsize , contentOffset equivalent in NSScrollview.


Solution

  • 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.