I haven't done much AppKit work in a while. Right now I have a small app where 
I'm trying to do something very simple: put a custom NSView in a window and 
make it scrollable. The view determines its own frame size based on the content 
it needs to display. So all I did was create a new window in IB, add an 
instance of my view, embed it in an NSScrollView, and set up default 
constraints for the scroll view so it'll track the window size.

It sort of works as long as the window is bigger than my custom view (although 
the view is pinned to the bottom of the window instead of the top for some 
reason.) But as soon as I resize the window to a height smaller than the custom 
view's, the view disappears and never comes back.

I added an override of -setFrame: and found that my view's frame is being set 
to (0, 0, 0, 0) by AppKit while redisplaying the window. I have no idea why 
this is happening — it probably has something to do with constraints, but I 
don't understand constraints well enough to know why (and I can't find any 
clear documentation about how to use constraints with scroll views.) How can I 
fix this?

(OS X 10.10.4, Xcode 6.3.)

—Jens

* thread #1: tid = 0x691af4, 0x0000000100005c08 Hops`-[RevTreeView 
setFrame:](self=0x0000610000141600, _cmd=0x00007fff8b0c9343, frame=(origin = (x 
= 0, y = 0), size = (width = 0, height = 0))) + 24 at RevTreeView.m:70, queue = 
'com.apple.main-thread', stop reason = breakpoint 3.1
  * frame #0: 0x0000000100005c08 Hops`-[RevTreeView 
setFrame:](self=0x0000610000141600, _cmd=0x00007fff8b0c9343, frame=(origin = (x 
= 0, y = 0), size = (width = 0, height = 0))) + 24 at RevTreeView.m:70
    frame #1: 0x00007fff9564628f AppKit`-[NSView resizeWithOldSuperviewSize:] + 
694
    frame #2: 0x00007fff9574ce05 AppKit`-[NSView layoutSubtreeIfNeeded] + 810
    frame #3: 0x00007fff95656e66 AppKit`-[NSView 
_sendViewWillDrawInRect:clipRootView:] + 47
    frame #4: 0x00007fff957fad04 AppKit`-[NSView 
displayRectIgnoringOpacity:inContext:] + 362
    frame #5: 0x00007fff959354cd AppKit`-[_NSMirrorDocumentView drawRect:] + 265
    frame #6: 0x00007fff95676859 AppKit`-[NSView(NSInternal) 
_recursive:displayRectIgnoringOpacity:inGraphicsContext:CGContext:topView:shouldChangeFontReferenceColor:]
 + 1186
    frame #7: 0x00007fff95676278 AppKit`__46-[NSView(NSLayerKitGlue) 
drawLayer:inContext:]_block_invoke + 218
    frame #8: 0x00007fff95675f21 AppKit`-[NSView(NSLayerKitGlue) 
_drawViewBackingLayer:inContext:drawingHandler:] + 2407
    frame #9: 0x00007fff956755a3 AppKit`-[NSView(NSLayerKitGlue) 
drawLayer:inContext:] + 108
    frame #10: 0x00007fff958296c6 AppKit`-[_NSBackingLayerContents 
drawLayer:inContext:] + 145
    frame #11: 0x00007fff8a669ce7 QuartzCore`-[CALayer drawInContext:] + 119
    frame #12: 0x00007fff958291fe AppKit`-[_NSTiledLayer drawTile:inContext:] + 
625
    frame #13: 0x00007fff95828f2f AppKit`-[_NSTiledLayerContents 
drawLayer:inContext:] + 169
    frame #14: 0x00007fff8a669ce7 QuartzCore`-[CALayer drawInContext:] + 119
    frame #15: 0x00007fff95828e70 AppKit`-[NSTileLayer drawInContext:] + 169
    frame #16: 0x00007fff8a6683c7 QuartzCore`CABackingStoreUpdate_ + 3306
    frame #17: 0x00007fff8a6676d7 
QuartzCore`___ZN2CA5Layer8display_Ev_block_invoke + 59
    frame #18: 0x00007fff8a667694 QuartzCore`x_blame_allocations + 81
    frame #19: 0x00007fff8a65b43c QuartzCore`CA::Layer::display_() + 1546
    frame #20: 0x00007fff95828d87 AppKit`-[NSTileLayer display] + 119
    frame #21: 0x00007fff956c2df4 AppKit`-[_NSTiledLayerContents update:] + 5688
    frame #22: 0x00007fff956c14c7 AppKit`-[_NSTiledLayer display] + 375
    frame #23: 0x00007fff8a6597fd 
QuartzCore`CA::Layer::display_if_needed(CA::Transaction*) + 603
    frame #24: 0x00007fff8a658e81 
QuartzCore`CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 35
    frame #25: 0x00007fff8a658612 
QuartzCore`CA::Context::commit_transaction(CA::Transaction*) + 242
    frame #26: 0x00007fff8a6583ae QuartzCore`CA::Transaction::commit() + 390
    frame #27: 0x00007fff9564eae6 AppKit`-[NSWindow 
_setFrameCommon:display:stashSize:] + 3771
    frame #28: 0x00007fff95937e73 AppKit`-[NSWindow(NSWindowResizing) 
_resizeWithEvent:] + 1469
    frame #29: 0x00007fff957dd47c AppKit`-[NSTitledFrame mouseDown:] + 200
    frame #30: 0x00007fff957dd3ab AppKit`-[NSThemeFrame mouseDown:] + 68
    frame #31: 0x00007fff95d4d2fc AppKit`-[NSWindow 
_reallySendEvent:isDelayedEvent:] + 14125
    frame #32: 0x00007fff956dcd76 AppKit`-[NSWindow sendEvent:] + 470
    frame #33: 0x00007fff956d9312 AppKit`-[NSApplication sendEvent:] + 2504
    frame #34: 0x00007fff95602c68 AppKit`-[NSApplication run] + 711
    frame #35: 0x00007fff9557f354 AppKit`NSApplicationMain + 1832
    frame #36: 0x0000000100003732 Hops`main(argc=3, argv=0x00007fff5fbff930) + 
34 at main.m:12
    frame #37: 0x00007fff982285c9 libdyld.dylib`start + 1

_______________________________________________

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

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

Reply via email to