【问题标题】:Changing Popover view frame on fly即时更改 Popover 视图框架
【发布时间】:2012-05-16 18:43:49
【问题描述】:

当弹出框显示时,如何根据条件检查使其大小可变?使用弹出框时是否支持此功能?

这是我更改帧大小的示例:

CGFloat newHeight = 200;
NSRect newFrame  = [parentView frame];
newFrame.size.height = newHeight;

NSView* childView = someView;

[parentView setFrame:newFrame];
[self.view addSubview:childView];

【问题讨论】:

    标签: objective-c cocoa osx-lion popover


    【解决方案1】:

    您需要将NSPopoverpopupwindow.contentViewController 属性更改为具有不同大小视图的新NSViewController。 也就是说,调整视图框架的大小只会导致奇怪的绘图问题。要使弹出窗口更改大小,必须更改 contentViewController

    理想情况下,您应该设置一个新的视图控制器,它本质上是您现有NSViewController 的副本,但包含一个更高/更短的视图。但在最坏的情况下,您可以这样做:

    gPopoverWindow.contentViewController = [[[NSViewController alloc] initWithNibName: @"tempNibName" bundle: nil] autorelease];
    NSView *v = self.view;
    NSRect b = [v frame];
    b.size.height += 25;
    [v setFrame: b];
    gPopoverWindow.contentViewController = self;
    

    在我的测试中,这导致弹出框开始收缩动画(因为被设置为临时视图控制器),然后增长到新的大小。

    【讨论】:

      【解决方案2】:

      不知道是否有任何更改,但在 10.9 中,您所要做的就是在弹出框上设置内容大小,例如:

      [popoverView setFrame:NSMakeRect(0, 0, 581, 581)];
      [thePopover setContentSize:popoverView.frame.size];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-09-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多