I have a flipped custom view (within a scroll view) which layouts it's
subviews as follows:

WORKS:

  - (void) layoutSubviews
  {
      NSLog(@"layout");

      NSRect frame = [self frame];
      CGFloat width = frame.size.width;
      CGFloat height = 0;
      for(NSView *itemView in itemViews) {
          height += [itemView frame].size.height;
      }

      NSLog(@"view height: %1.0f", height);

      if (frame.size.height != height) {
          frame.size.height = height;
          [self setFrame:frame];
          NSLog(@" - view: %@", NSStringFromRect(frame));
      }

      CGFloat y = 0;
      for(NSView *itemView in itemViews) {
          NSRect itemFrame = [itemView frame];
          itemFrame.origin.y = y;
          itemFrame.size.width = width;
          [itemView setFrame:itemFrame];
          NSLog(@" - item: %@", NSStringFromRect(itemFrame));
          y += itemFrame.size.height;
      }

      [self setNeedsDisplayInRect:frame];
  }

The above works just fine. What I don't understand is why moving the
adjustment of the frame size *after* the subview layout is breaking
it. By breaking I mean that some subviews are disappearing. It does
not seem to be a redraw/needsDisplay problem though. Rather like they
end up somewhere off screen.


DOESN'T WORK:

  - (void) layoutSubviews
  {
      NSLog(@"layout");

      NSRect frame = [self frame];
      CGFloat width = frame.size.width;
      CGFloat height = 0;
      for(NSView *itemView in itemViews) {
          height += [itemView frame].size.height;
      }

      CGFloat y = 0;
      for(NSView *itemView in itemViews) {
          NSRect itemFrame = [itemView frame];
          itemFrame.origin.y = y;
          itemFrame.size.width = width;
          [itemView setFrame:itemFrame];
          NSLog(@" - item: %@", NSStringFromRect(itemFrame));
          y += itemFrame.size.height;
      }

      NSLog(@"view height: %1.0f", height);

      if (frame.size.height != height) {
          frame.size.height = height;
          [self setFrame:frame];
          NSLog(@" - view: %@", NSStringFromRect(frame));
      }

      [self setNeedsDisplayInRect:frame];
  }

Anyone spotting a problem that I am missing?

cheers
--
Torsten
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to