• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: NSScroller question
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: NSScroller question


  • Subject: Re: NSScroller question
  • From: email@hidden
  • Date: Fri, 28 Mar 2008 02:17:49 +0100

Yes, I meant scroller, not slider. Just had a glass of wine too much :-)

Actually I don't want to add an accessory view, I want to get rid of
the one that appears to be there by default. I have attached a
screenshot showing what I'm talking about. The yellow part is the
knob, drawn by filling the rect return by calling [self
rectForPart:NSScrollerKnob]. The green part is the slot,  [self
rectForPart:NSScrollerKnobSlot]. The white part above the slot is by
default black, but here I made it white by filling the rect returned
by calling [self rectForPart:NSScrollerNoParts].

I can move the knob/slot upwards by tampering with their designated
rects ("rect.origin.y -= 5"), thus hiding the white part. But that
messes up the drawing when the view is updated.

I figured the white part was a view, but since you are telling me
NSScroller has no subviews I really don't know what to think. Maybe
there is something wrong with my implementation?

@implementation TestScroller

- (void)drawRect:(NSRect)rect
{
	[self drawKnobSlot];
	[self drawKnob];
}

- (void)drawKnob
{
	NSRect rect = [self rectForPart:NSScrollerKnob];
	[[NSColor yellowColor] set];
	[NSBezierPath fillRect:rect];
}

- (void)drawKnobSlot
{
	NSRect rect = [self rectForPart:NSScrollerKnobSlot];
	[[NSColor greenColor] set];
	[NSBezierPath fillRect:rect];
}

@end

On Fri, Mar 28, 2008 at 12:41 AM, Troy Stephens <email@hidden> wrote:
>
>  On Mar 27, 2008, at 4:26 PM, email@hidden wrote:
>  > Thanks, but the corner view is the right side corner of the header
>  > view, right? I was talking about the small view just below it, on top
>  > of the vertical slider and part of the slider itself. It's a tiny view
>  > of about 2 pixels height. I believe it corresponds to
>  > NSScrollerNoPart, but I'm not sure.
>
>  (By "slider" I take it you really mean "scroller", as NSSlider is
>  something else entirely. :-)
>
>  An NSScroller (currently) has no subviews, but if your aim is to add
>  one or more accessory views above the scroller, that can be done by
>  subclassing NSScrollView.  The key is to override NSScrollView's -tile
>  method to invoke [super tile], and then adjust the layout to
>  accommodate your accessory subview(s).  Figure out where you want your
>  accessory subview(s) to go, set their frame(s), and change the
>  ScrollView's verticalScroller's frame (shrink and move down, since
>  ScrollViews are flipped) to make room for them.
>
>
>
>  >
>  >
>  > On Thu, Mar 27, 2008 at 9:53 PM, Troy Stephens <email@hidden>
>  > wrote:
>  >>
>  >> On Mar 27, 2008, at 9:50 AM, email@hidden wrote:
>  >>> Hi,
>  >>>
>  >>> NSScroller has a small view, by default two pixels high, just above
>  >>> the scroller and below the NSTableHeaderView's corner view. How
>  >>> can I
>  >>> get at this view? If you look at the XCode interface you can see
>  >>> they
>  >>> have put an icon in this view (the one that splits the editor view)
>  >>> and made it larger. I would like to remove the view completely so
>  >>> the
>  >>> scroller goes all the way up to the edge of the corner view.
>  >>>
>  >>> This question has been addressed before in the archives, but
>  >>> unfortunately the link pointing to an answer is no longer valid.
>  >>>
>  >>> Thanks.
>  >>> F.
>  >>
>  >> See NSTableView.h:
>  >>
>  >> /* Get and set the cornerView. The cornerView is the view that
>  >> appears
>  >> directly to the right of the headerView above the vertical
>  >> NSScroller.
>  >> The scroller must be present for the cornerView to be shown.
>  >> Calling -
>  >> setCornerView: may have the side effect of tiling the
>  >> enclosingScrollView to accomodate the size change. The default value
>  >> is an internal class that properly fills in the corner.
>  >>  */
>  >> - (void)setCornerView:(NSView *)cornerView;
>  >> - (NSView *)cornerView;
>  >>
>  >> --
>  >> Troy Stephens
>  >> Cocoa Frameworks
>  >> Apple, Inc.
>  >>
>  >>
>  >>
>  >>
>
>
>  --
>  Troy Stephens
>  Cocoa Frameworks
>  Apple, Inc.
>
>
>
>

Attachment: Picture 2.png
Description: PNG image

_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

  • Follow-Ups:
    • Re: NSScroller question
      • From: Troy Stephens <email@hidden>
    • Re: NSScroller question
      • From: "Hamish Allan" <email@hidden>
References: 
 >NSScroller question (From: email@hidden)
 >Re: NSScroller question (From: Troy Stephens <email@hidden>)
 >Re: NSScroller question (From: email@hidden)
 >Re: NSScroller question (From: Troy Stephens <email@hidden>)

  • Prev by Date: Re: Is @"constantstring" pointer equal to @"constantstring" a guarantee?
  • Next by Date: Re: error strings in NSPropertyListSerialization
  • Previous by thread: Re: NSScroller question
  • Next by thread: Re: NSScroller question
  • Index(es):
    • Date
    • Thread