【问题标题】:How to make the NSButton above a NSButton?如何使 NSButton 位于 NSButton 之上?
【发布时间】:2013-05-06 12:32:22
【问题描述】:

我有两个 NSButton。两个按钮都带有图像。这就是我创建的 [buttons] (http://i.stack.imgur.com/IYXIE.png) 问题是星形按钮总是位于叶子按钮后面。我怎么能把它放在前面。 (搜索 Mac osx 而不是 iOS。)
更新: 这是我在第一次鼠标悬停 时得到的,在第二次鼠标悬停时得到这个

【问题讨论】:

  • 在您的 nib 文件中,只需从视图层次结构中删除星形按钮并重新添加即可
  • 星形按钮位于叶子按钮上方...我删除并添加了星形按钮。只有我遇到了这个问题。

标签: objective-c macos cocoa


【解决方案1】:
[starButton removeFromSuperview];
[self addSubview:starButton positioned:NSWindowAbove relativeTo:nil];

另外,NSView 也支持该方法

 sortSubviewsUsingFunction:context:

实现对视图进行简单排序。需要更多代码,但看起来更干净。

【讨论】:

    【解决方案2】:

    您可以使用 bringSubviewToFront 强制视图显示在另一个视图的“顶部”:

    [parentView bringSubviewToFront:view];
    

    如果您想更改情节提要设计器中视图的顺序,只需将您想要的视图拖到左侧菜单中另一个视图的下方即可。最顶部的视图始终是列表中最后显示的视图。

    【讨论】:

    • 抱歉,它只在 iOS 中受支持...我支持 MAC
    • 我试过...第一次鼠标悬停,星形按钮出现在叶子按钮上方,第二次鼠标悬停后,发送到后面......
    【解决方案3】:

    我用A代替了星号,用Apple代替了离开。

    您正在这样做:

    您需要将按钮位置更改为:

    Apple 之后添加按钮A

    然后你会看到根据你的要求。

    【讨论】:

    • 我已经有了这样的...我对这两个按钮进行了子类化。在第一次鼠标悬停时,它会正确显示,而在第二次鼠标悬停时,它(比如按钮 A)位于 Apple 按钮后面。
    • 如果这些是按钮,那么它们的顺序不能通过鼠标悬停来改变。您能说出您使用的是哪种按钮吗?
    • * 星形按钮:样式-正方形,类型-瞬时变化和 * 叶形按钮:样式-斜面,类型--瞬时推入
    【解决方案4】:

    这样就可以了

    [parentView bringSubviewToFront:leafButton];
    [parentView bringSubviewToFront:starButton];
    

    【讨论】:

    • 抱歉,它只在 iOS 中受支持...我正在寻找 Mac
    【解决方案5】:

    要在 macOS 上将子视图置于最前面,请执行以下操作:

    NSView *superView = myObject.superview;
    [myObject removeFromSuperview];
    [superView addSubview:myObject]; // brings to the front
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多